Observer.onNext中的RxJava / RxScala异步代码

时间:2016-10-22 22:15:40

标签: asynchronous rx-java reactive-programming rx-scala

假设您希望将某些流中的事件存储到数据库中,并且该数据库的客户端库是异步的。

E.g。有一个方法writeEvent(event: MyEvent): Future[Boolean],你必须在发出下一个事件时在你的观察者的onNext内调用。除了阻止Future

之外,有没有一种方法可以做到这一点

我目前看到如何实现这一点的唯一方法是创建一些自定义Scheduler,允许我将线程返回到池,直到onNext内的异步代码完成

1 个答案:

答案 0 :(得分:2)

您不希望在onNext订阅者回调中阻止这样做,这会破坏Rx。它可以以更惯用的方式链接在一起。

我不太喜欢Futures,但我想知道Observable.from(Future)是否有效:

someStream
    .flatMap(evt => Observable.from(writeEvent(evt)))
    .subscribe(
        next => ...,
        err => ...
)