我如何在 Android 上用 Rx 累积 Observable 的每 2 个发射值?

How can I accumulate each 2 emitted values of Observable with Rx on Android?

我有一个 Observable,每秒发出 0 到 10 的值。我需要累加每两个值并在完成时打印累加器值的结果。

完成!我使用 buffer(4) 方法获取列表中的 4 个值中的每一个,并从中保存前两个值以累积我的计数器:)

您可以使用 reduce 运算符。这是科特林的例子:

Observable.just(1,2,3)
    .reduce { t1: Int, t2: Int -> t1+t2}
    .subscribe { print(it) } // prints only sum

scan运算符应该可以满足您的要求。

Observable.from(1,2,3,4,5)
    .scan { t1, t2 -> t1 + t2 }
    .subscribe() // 1, 3, 6, 10, 15