【发布时间】:2018-03-17 09:31:14
【问题描述】:
我有一个场景,其中 1 个 observable 监听事件,然后应该触发另一个异步事件,并等待它运行源 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 中被删除,这就是我正在使用的。有人可以提供建议作为实现此目标的正确方法吗? 谢谢!
【问题讨论】:
-
就目前而言,您的图表尚不清楚,尽管我赞扬您首先编写了一个。这确实有点帮助,但并不完全清楚。无论如何,对于措辞问题,这似乎是一个无损背压问题。无损背压的一个问题是,如果您的 src1 持续时间过长,您最终将耗尽内存(或任何其他相关的有限资源)。否则你可以参考这个:github.com/ReactiveX/rxjs/issues/1542
-
我认为这是一个非常相似的问题stackoverflow.com/questions/46469442/…
-
感谢 cmets,是的,我可能没有像我应该的那样解释它。我能够在 src1 和 src2 observables 上使用 combineLatest。检查队列的状态以及是否仍有异步操作正在进行。比我预期的要容易:)
标签: rxjs observable rxjs5