2015-11-07 61 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添加了一个通知。谢谢 –