2017-04-26 65 views
0

在RxScala中如何「拉鍊」超過2個觀察對象?RxScala「zip」多個觀察對象

val ob1: Observable[Int] = Observable.from(Future(10)) 
val ob2: Observable[Int] = Observable.from(Future(20)) 
val ob3: Observable[Int] = Observable.from(Future(30)) 

「拉鍊」 可以完美兼容2個觀測量

val obComb: Observable[(Int, Int, Int)] = ob1 zip ob2 

我們如何 「拉鍊」 超過2個觀測量?

回答

0

您可以使用zipWith,它允許您提供「壓縮」功能。

val obComb = ob1 
    .zipWith(ob2)({ case (x1, x2) => (x1, x2) }) 
    .zipWith(ob3)({ case ((x1, x2), x3) => (x1, x2, x3) }) 
0

由於壓縮和解多於兩個的觀測量不能被「很好」定義爲實例方法,它的定義爲在同伴對象「靜態」方法。也就是說,要壓縮三個觀察對象,請寫下

val obComb = Observable.zip(ob1, ob2, ob3)