组合两个发出不同类型的Observable

asc*_*sco 6 java rx-java

我有两个Observable,一个Observable<String>,一个Observable<Boolean>.我可以将它们结合起来,这样我就可

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

}
Run Code Online (Sandbox Code Playgroud)

两个操作完成后?

Reu*_*ani 13

当你想等待从两个observable发出的项目(同步它们)时,你通常需要这样的东西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);
Run Code Online (Sandbox Code Playgroud)

result将可观察到的产生的施加(a, b) -> a + bo1的和o2的项.导致可观察到的屈服"a1", "b2", "c3".

您还可以使用Obervable.zipWith实际实例来获得相同的效果.

请注意,当没有任何要压缩的内容时,这将在较短的 observable 上终止.

  • 仅当第一个和第二个 Observables 中的项目数量相等时才有效,否则您将丢失发射项目!!! (2认同)