RxJava,如何在Observables调用链的不同状态更新视图?

时间:2015-08-09 15:19:49

标签: rx-java rx-android

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

我知道我可以将其分解为两个通话时间,在第一个flatmap内调用第二个Observable,但那很麻烦。

如果不沿着这条路走下去,我怎样才能实现上述的目标? 感谢

1 个答案:

答案 0 :(得分:2)

以下是使用doOnNext()的ny旧项目的示例:

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()之前执行

SimonBasléheredoOnNext()的良好解释:

  

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

     

onNext更为终结,它消耗了价值。