RxJS - 暂停Observable直到第二个Observable完成,

时间:2017-10-05 16:59:37

标签: rxjs observable rxjs5

我有一个场景,其中1个observable侦听事件,然后应该触发另一个asynchrounous事件,并在它运行源Observable中的下一个项目之前等待。

第一个observable可以比异步事件更快地触发,它必须等待异步事件完成才能从第一个observable中获取另一个项目。

所以...基本上我需要从第一个observable设置一个'队列'(因为我不能从源1中丢失数据)

源2应该从队列中一次获取1个项目,运行它,从队列中删除该项目,然后转到队列中的下一个项目。

src1-  --ev1---ev2---ev3----ev4---ev5--ev6---
src2-  --ev1------------ev2-------------ev3--------ev4-------ev5------ev6
--------------async-----------async---------async------async------asyc

我正在查看RX文档,似乎pausibleBuffered可能是一个解决方案,但我注意到它已在RX5中删除,这就是我正在使用的。有人可以提供建议作为实现这一目标的正确方法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用mergeScan逐个运行异步操作,因为它需要先前的异步操作结果才能运行异步操作。

const src2 = src1.mergeScan((_, value) => doSomething(value));

http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-mergeScan