OnCompleted称为内部zip

时间:2017-02-14 14:54:57

标签: java android rx-java

Observable<List<Object1>> obs1 = getObservableList1().from({/*some code*/
}).map({/*some code*/}).toList({/*some code*/});

Observable<List<Object2>> obs2 = getObservableList2();

Observable.zip(obs1 , obs1, (res1, res2) -> {

//some more code block1

}).subscribe({

//some code after obs1 and obs2 
//some more code block2

});

我有一种情况,当obs1包含空列表并且永远不会调用zip.subscribe()。但我需要将空List作为res1返回并执行block1和block2,就好像obs1中的列表包含元素一样。

问题是如何从from().map().toList()跳过obs1并将空List作为res1返回。

1 个答案:

答案 0 :(得分:0)

这取决于你想达到什么目标?如果您只想在两个源Observables完成后执行一些代码,请使用以下命令:

 Observable.merge(obs1 , obs2).doOnComplete(() -> {
    ....
 }).subscribe(...)

如果您需要对结果列表执行某些操作,但obs2有时为空(无项目),则只需设置默认值:

 Observable<List<Object2>> obs2 = getObservableList2()
         .defaultIfEmpty(Collections.emptyList());