【问题标题】:RxJava, How to update views at different states of Observables call chain?RxJava,如何在 Observables 调用链的不同状态下更新视图?
【发布时间】:2015-08-09 15:19:48
【问题描述】:

我需要使用一个 Observable 执行一项任务,获取发出的数据,然后使用另一个 Observable 执行另一个查询。 通常我会使用flatmap 来链接两个 Observable,只关心发出的最后一条数据。 现在需要在此过程中更新视图。假设当第一个 Observable 发出数据时,我应该在 UI 上显示一个文本行。

我知道我可以将其分解为两个调用时间,调用第一个的 onNext() 内的第二个 Observable,但这很麻烦。

如何在不走这条路的情况下实现上述目标? 谢谢

【问题讨论】:

    标签: rx-java rx-android


    【解决方案1】:

    这是一个来自 doOnNext() 的旧项目的示例:

    API.getVideoListObservable()
                    .doOnError(t -> t.printStackTrace())
                    .map(r -> r.getObjects())
                    .doOnNext(l -> VideoActivity.this.runOnUiThread(() -> fragment.updateVideoList(l)))
                    .doOnNext(l -> kalturaVideoList.addAll(l))
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe();
    

    注意.doOnNext(l -> VideoActivity.this.runOnUiThread(() -> fragment.updateVideoList(l)))——在它之后你可以随时使用flatmap(),而doOnNext()会在flatmap()之前执行

    Simon Baslé heredoOnNext() 的很好解释:

    doOnNext 用于副作用:您想对项目做出反应(例如记录) 流的中间步骤中的排放,例如之前 流被过滤,用于记录等横向行为,但你 仍然希望该值沿流传播。

    onNext 更最终,它消耗值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-16
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多