如何在 rxjava 中从延迟订阅开始挂钩观察
How hook observable starting on delayed subscription in rxjava
可用性: 当用户按下按钮时,搜索在 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));
问题: 我无法挂钩启动 observable 的执行。
如何最好地解决问题?或者其他解决方案?
我找到了解决方案。
我创建 showProgress observable:
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);
可用性: 当用户按下按钮时,搜索在 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));
问题: 我无法挂钩启动 observable 的执行。
如何最好地解决问题?或者其他解决方案?
我找到了解决方案。
我创建 showProgress observable:
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);