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
返回。
答案 0 :(得分:0)
这取决于你想达到什么目标?如果您只想在两个源Observables完成后执行一些代码,请使用以下命令:
Observable.merge(obs1 , obs2).doOnComplete(() -> {
....
}).subscribe(...)
如果您需要对结果列表执行某些操作,但obs2
有时为空(无项目),则只需设置默认值:
Observable<List<Object2>> obs2 = getObservableList2()
.defaultIfEmpty(Collections.emptyList());