可用性:当用户按下按钮时,搜索将在 3000 毫秒后开始。当搜索开始时,应该显示进度条。
我推迟了订阅:
Observable<SearchResult> delayedSearch = search
.delaySubscription(3000, TimeUnit.MILLISECONDS)
//not working
.doOnSubscribe(() -> log(should appear progress bar))
delayedSearch.subscribe(result -> log(should disappear progress bar));
问题:我无法 Hook start observable 的执行。
如何最好地解决问题?或者也许是另一种解决方案?
最佳答案
我找到了解决方案。
我创建了可观察的 showProgress:
Observable showProgress = Observable.create(subscriber -> {
log("showProgress")
subscriber.onNext(null);
subscriber.onCompleted();
}).subscribeOn(AndroidSchedulers.mainThread());
并在搜索之前添加:
Observable<SearchResult> searchWithProgress = showProgress.flatMap((Func1) o -> search);
所以我可以这样使用它:
Observable<SearchResult> delayedSearch = searchWithProgress.delaySubscription(3000, TimeUnit.MILLISECONDS);
delayedSearch.subscribe(result -> log(hideProgress);
关于reactive-programming - 如何在 rxjava 中 Hook 可观察的延迟订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31291794/