我需要使用一个Observable执行一个任务,获取发出的数据,然后使用另一个Observable执行另一个查询。
通常情况下,我会使用onLoad
链接两个Observable并只关注最后发出的数据。
现在需要在此过程中更新视图。假设当第一个Observable发出数据时,我应该在UI上显示一个文本行。
我知道我可以将其分解为两个通话时间,在第一个flatmap
内调用第二个Observable,但那很麻烦。
如果不沿着这条路走下去,我怎样才能实现上述的目标? 感谢
答案 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éhere对doOnNext()
的良好解释:
doOnNext
用于副作用:您希望对项目做出反应(例如,日志) 在流的中间步骤中的排放,例如之前 流被过滤,用于记录等横向行为,但是你 仍然希望值在流中传播。
onNext
更为终结,它消耗了价值。