【问题标题】:How hook observable starting on delayed subscription in rxjava如何从 rxjava 中延迟订阅开始挂钩可观察
【发布时间】:2015-07-09 15:16:50
【问题描述】:

可用性:当用户按下按钮时,搜索在 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));

问题:我无法挂钩 start observable 的执行。
解决问题的最佳方法是什么?或者也许是另一种解决方案?

【问题讨论】:

    标签: reactive-programming rx-java


    【解决方案1】:

    我找到了解决方案。
    我创建了 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);
    

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 2017-11-14
      • 2017-04-23
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 2018-06-11
      • 2018-09-03
      • 1970-01-01
      相关资源
      最近更新 更多