观察到可观察的

时间:2016-06-08 09:20:10

标签: scala observable mongo-scala-driver

我使用mongo-scala-driver 1.0.1在 insertMany 之后返回Observable [Completed]。

我把很多文档放在循环中,我需要在已经插入所有文件之后做一些操作。

我可以使用observable.toFuture来获取Seq [Future [Completed]],然后使用Future.sequence(...)来处理未来。

但是可以在Scala中将Seq[Observable[Completed]]转换为Observable[...]吗?或者有更好的方法来处理它?<​​/ p>

mongo-scala-driver拥有自己的Observable trait org.mongodb.scala.Observable

1 个答案:

答案 0 :(得分:1)

以下是如何将List Observable展平为单Observable的示例。

List(
  Observable.interval(200 millis),
  Observable.interval(400 millis),
  Observable.interval(800 millis)
).toObservable.flatten.take(12).toBlocking.foreach(println(_))

您可以在此处找到此示例和更多示例:https://github.com/ReactiveX/RxScala/blob/0.x/examples/src/test/scala/examples/RxScalaDemo.scala

修改

这是mongo api应该使用的内容,虽然我没有测试它。

val observables: Seq[Observable[Int]] = ???
val result: Observable[Int] = Observable(observables).flatMap(identity)