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



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

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

我怎样才能在不走那条路的情况下实现我上面描述的目标?由于

下面是我以前项目中的一个例子,使用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 basldoOnNext()的解释很好:

doOnNext是副作用:你想要反应(例如;日志)到项目在你的河流的中间步骤的排放,例如之前流被过滤,为横向行为,如日志,但你仍然希望该值沿流传播

onNext更加final,它消耗了这个值。

相关内容

  • 没有找到相关文章

最新更新