2017-02-14 32 views
0
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()永遠不會被調用。但我只需要返回空0123,爲res1並執行block1和block2就好像如果obs1中的列表具有元素。OnCompleted調用內部郵編

問題是如何從obs1跳過from().map().toList()並返回空Listres1

回答

0

這取決於你想達到什麼目的?如果你想只執行一些代碼後的源觀測完成後,使用以下命令:

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

相反,如果你需要做一些事情的結果列表,但obs2有時是空的(沒有項目),那麼你只需要設置一個默認值:

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