我們有搜索字段的窗口。每次用戶輸入搜索內容時都會執行。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