Java 未完成调用内部zip Observable obs1=getObservableList1()。来自({/*一些代码*/ }).map({/*一些代码*/}).toList({/*一些代码*/}); 可观测obs2=getObservableList2(); Observable.zip(obs1,obs1,(res1,res2)->{ //更多代码块1 }).订阅({ //obs1和obs2之后的一些代码 //更多代码块2 });
我遇到过这样的情况:obs1包含空列表,并且从不调用Java 未完成调用内部zip Observable obs1=getObservableList1()。来自({/*一些代码*/ }).map({/*一些代码*/}).toList({/*一些代码*/}); 可观测obs2=getObservableList2(); Observable.zip(obs1,obs1,(res1,res2)->{ //更多代码块1 }).订阅({ //obs1和obs2之后的一些代码 //更多代码块2 });,java,android,rx-java,Java,Android,Rx Java,我遇到过这样的情况:obs1包含空列表,并且从不调用zip.subscribe()。但是我只需要将空的List返回为res1,并执行block1和block2,就像obs1中的列表包含元素一样 问题是如何从obs1中跳过from().map().toList(),并返回空的List作为res1,这取决于您想要实现什么?如果您想在两个源观测都完成后执行一些代码,请使用以下命令: Observable<List<Object1>> obs1 = getObservableLi
zip.subscribe()
。但是我只需要将空的List
返回为res1
,并执行block1和block2,就像obs1
中的列表包含元素一样
问题是如何从
obs1
中跳过from().map().toList()
,并返回空的List
作为res1
,这取决于您想要实现什么?如果您想在两个源观测都完成后执行一些代码,请使用以下命令:
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
});
如果您需要对结果列表执行某些操作,但obs2
有时为空(无项),则只需设置默认值:
Observable.merge(obs1 , obs2).doOnComplete(() -> {
....
}).subscribe(...)
Observable obs2=getObservableList2()
.defaultIfEmpty(Collections.emptyList());
Observable<List<Object2>> obs2 = getObservableList2()
.defaultIfEmpty(Collections.emptyList());