我有一个场景,其中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中删除,这就是我正在使用的。有人可以提供建议作为实现这一目标的正确方法吗? 谢谢!
答案 0 :(得分:0)
您可以使用mergeScan
逐个运行异步操作,因为它需要先前的异步操作结果才能运行异步操作。
const src2 = src1.mergeScan((_, value) => doSomething(value));
http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-mergeScan