2016-11-09 37 views
4

鑑於我訂閱了2個不同的觀測量,我希望得到他們兩人在onNext後做一些操作,以他們訂閱2個不同的Observable和onNext他們?

讓我們說我有2個觀測量

Observable<List<String>> childName = Observable.from(children)... some operations 
Observable<List<String>> teacherName = Observable.from(teachers)... some operations 

如何獲取他們兩個在我訂閱?

subscribe( 
    onNext(List<String> childName, List<String> className) 

這樣我就可以以這種方式在我的聽衆中傳遞他們兩個。

我不想把它們結合在一起,我只想當操作完成後,讓他們與它傳遞我的訂閱

+0

使用flatMap把它們結合在一起,而不是你的聽衆 – Blackbelt

回答

3

您可以zip其價值的一個Pair

Observable.zip(childName, className, 
    (a, b) -> Pair.of(a, b)) 
.subscribe((Pair<List<String>, List<String>> pair) -> { 
    // do something with pair.first and pair.second 
}, Throwable::printStackTrace); 
+0

什麼對象是對做什麼呢?它是一個Android組件?該代碼在我的演示者,所以我不能有主持人內的Android組件 – Salis

+0

例如:https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/tuple/Pair.html但你可以很容易地寫出你自己的。 – akarnokd

0

哈克,但簡單

Observable.zip(childName, teacherName, (childList, teachersList) -> { 
    // handle childList & teachersList 
    return Observable.empty(); 
}).subscribe(o -> {}, error -> { 
    //handle errors 
});