可观察到可观察序列
Seq of observable to observable
我使用 mongo-scala-driver 1.0.1 return Observable[Completed] 在 insertMany.
之后
我循环放置了很多文档,在所有文档都插入后我需要做一些操作。
我可以使用 observable.toFuture 获取 Seq[Future[Completed]] 然后 Future.sequence(...) 来处理未来。
但是在 Scala 中可以将 Seq[Observable[Completed]]
转换为 Observable[...]
吗?或者有更好的处理方式?
mongo-scala-driver 有它自己的 Observable trait org.mongodb.scala.Observable
这是一个示例,说明如何将 Observable
中的 List
扁平化为单个 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)
我使用 mongo-scala-driver 1.0.1 return Observable[Completed] 在 insertMany.
之后我循环放置了很多文档,在所有文档都插入后我需要做一些操作。
我可以使用 observable.toFuture 获取 Seq[Future[Completed]] 然后 Future.sequence(...) 来处理未来。
但是在 Scala 中可以将 Seq[Observable[Completed]]
转换为 Observable[...]
吗?或者有更好的处理方式?
mongo-scala-driver 有它自己的 Observable trait org.mongodb.scala.Observable
这是一个示例,说明如何将 Observable
中的 List
扁平化为单个 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)