何时使用zip()而不是zipWith()RxJava

时间:2017-08-08 18:48:46

标签: java android rx-java

在RxJava中,与zip()zipWith(成对组合是否存在语义差异?是静态zip和.zip之间的选择纯粹是风格吗?

1 个答案:

答案 0 :(得分:14)

便利性和背景。

当您已经组装了两个来源并且现在要将它们压缩在一起时,静态zip非常有用。大多数时候,他们本身就是长链或来自各地。

Observable<T1> source1 = op().op().op().op().op();
Observable<T2> source2 = op().op().op().op().op();

Observable.zip(source1, source2, (a, b) -> a + b);

当其中一个来源较长而另一个较短时,实例zipWith非常有用。此时,使用较短的拉链更方便。

public Observable<R> withIndex(Observable<T> source, Func2<Integer, T, R> func) {
    return source.zipWith(Observable.range(0, Integer.MAX_VALUE),
         (t, idx) -> func(idx, t));
}