我想在 WebView 中使用 RxJava 实现点击去抖动。
例如,用户快速点击链接,我只想处理第一次点击。
首先,我认为throttleFirst
这对它有好处。
private final BehaviorSubject<String> urlLoading = BehaviorSubject.create();
private final Observable<String> throttled = urlLoading.throttleFirst(CLICK_THROTTLE_MILLIS, TimeUnit.MILLISECONDS);
//...
throttled.subscribe(new Action1<String>() {
@Override
public void call(String url) {
something(url); // :/
}
});
//...
// WebView callback
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// return something(); // original
// i want to throttle events and return something() if it's ok or return just true for debounced events
urlLoading.onNext(url);
return ... ?
}
throttleFirst
工作正常,但我注意到我不能以这种方式返回值。
问题:
当方法具有返回类型时,如何使用 RxJava 返回值shouldOverrideUrlLoading
?
或者我不应该在这种情况下使用 Rx 吗?(采用另一种方式,例如更改标志Handler#postDelayed
?)