Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未完成调用内部zip Observable obs1=getObservableList1()。来自({/*一些代码*/ }).map({/*一些代码*/}).toList({/*一些代码*/}); 可观测obs2=getObservableList2(); Observable.zip(obs1,obs1,(res1,res2)->{ //更多代码块1 }).订阅({ //obs1和obs2之后的一些代码 //更多代码块2 });_Java_Android_Rx Java - Fatal编程技术网

Java 未完成调用内部zip Observable obs1=getObservableList1()。来自({/*一些代码*/ }).map({/*一些代码*/}).toList({/*一些代码*/}); 可观测obs2=getObservableList2(); Observable.zip(obs1,obs1,(res1,res2)->{ //更多代码块1 }).订阅({ //obs1和obs2之后的一些代码 //更多代码块2 });

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

我遇到过这样的情况:obs1包含空列表,并且从不调用
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());