2015-11-07 55 views
6

我有兩個Observable,一個Observable<String>,一個Observable<Boolean>。我可以合併它們嗎,因此我收到結合兩種發射不同類型的Observable

@Override 
public void call(String s, Boolean b) { 

} 

兩個操作都完成了嗎?

回答

13

當你要等待兩個觀測(同步他們)通常要像Observable.zip發射項目:

Observable<String> o1 = Observable.just("a", "b", "c"); 
Observable<Integer> o2 = Observable.just(1, 2, 3); 
Observable<String> result = Observable.zip(o1, o2, (a, b) -> a + b); 

result將是一個觀察的產生的(a, b) -> a + bo1的應用和o2的商品。產生可觀察的收益"a1", "b2", "c3"

您還可以使用Obervable.zipWith與實際實例獲得相同的效果。

請注意,這將在更短的時終止,因爲沒有東西需要壓縮。

+1

耶,作品像魅力,謝謝! – FWeigl

+1

只有在進入第一個和第二個Observable的物品數量相等時纔有效,否則你將失去散發物品! – Sniper

+0

@sniper添加了一個通知。謝謝 –