【发布时间】:2018-02-10 17:05:08
【问题描述】:
更新
我想我已经找到了解决方案。我在这个视频中解释它。基本上,使用 timeoutWith 和一些 zip 技巧(在 zip 内)。
如果我有一个像这样的 observable:
A-1-2--B-3-4-5-C--D--6-7-E
我想把“数字”放在较低的优先级;它应该等到“字母”被填满(例如一组 2 个)或达到超时,然后它才能发出。也许下面的说明(期望的结果)可以提供帮助:
A------B-1-----C--D-2----E-3-4-5-6-7
我一直在尝试一些想法...其中一个:第一步是拆分该流(groupBy),一个包含字母,另一个包含数字...,然后“中间发生了一些事情” ...,最后这两个(子)流合并了。
这就是我想要弄清楚的“中间的东西”。
如何实现呢? RxJS(版本 5.5.6)甚至可以实现吗?如果不是,最近的那个是什么?我的意思是,我要避免的是让“数字”泛滥成灾,而没有足够的机会让“字母”得到及时处理。
也许我到目前为止所做的这段视频也可以澄清:
- 原问题说明:https://www.youtube.com/watch?v=mEmU4JK5Tic
- 到目前为止:https://www.youtube.com/watch?v=HWDI9wpVxJk&feature=youtu.be
到目前为止,我的解决方案的问题(使用 .delay 延迟“数字”子流中的每个发射)不是最理想的,因为即使在“字符”(子)流结束后,它仍以缓慢的速度(10 秒)计时(没有完成——这里没有明确的界限——只是在不确定的时间内没有获得更多的价值)。我真正需要的是,一旦发生这种情况,让“数字”子流加快速度(到 2 秒)。
【问题讨论】:
标签: merge observable priority-queue rxjs5 reactive