并行处理两个Observable并转换为单个Observable

时间:2018-02-07 04:30:26

标签: scala reactive-programming monix

我有一个Observable,它是从一个Observable创建的,如下所示

import monix.reactive.Observable

import scala.collection.immutable
val a: immutable.Seq[(String, String)] = (0 to 10).toList.map(x =>(s"left-$x", s"right-$x"))

val originalStream: Observable[(String, String)] = Observable.fromIterable(a)

val leftStream: Observable[String] = originalStream.map(_._1).map(println)

val rightStream: Observable[String] = originalStream.map(_._2).map(println)

现在我如何并行运行leftStream和rightStream并将它们组合在一起以获得我可以订阅的新Observable?执行Observable.merge是按顺序执行它们。

1 个答案:

答案 0 :(得分:2)

执行leftStream.zip(rightStream)并且应该为两个流提供背压。

但是使用map从originalStream创建leftStream和rightStream意味着originalStream中的一个元素将转到其中一个流,而不是两者。