我们有搜索字段的窗口。每次用户输入搜索内容时都会执行。RxJava一次只能执行一个Observable
将搜索事件转换为数据流。
在每次新的搜索中,我们需要启动异步网络操作并关闭上一个。如何存档这个效果?
编辑1:这是我试过的。它执行所有可观察的事物!不是唯一的最后一个,哪里出错?
PublishSubject<Integer> subject = PublishSubject.create();
subject.switchMap(integer -> Observable.fromCallable(() -> {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "-" + integer + "-";
})).subscribe(s -> System.out.print(s));
for (int i = 0; i < 30; i++) subject.onNext(i);
我自己还是个初学者,但是难道你不是在观察用户搜索输入,而是反弹,然后用去抖用户输入执行搜索? – Andreas
@Andreas是的,这是我需要的一半。此外,一次只能执行一次执行等等。每个新值都取消以前的 – dooplaye
您可能希望同时执行'debounce'和'switchMap',以避免每次按键后搜索以及取消旧搜索。 – akarnokd