RxJS :(时间)在下一次发射后开始的缓冲区

惠特克

我想知道如何使用RxJs(4/5)正确实现吗?

-a-- -b----c----d-----------------------------------------------------------e------f---------------------
-5-sec after-"a"--> [abcd]---new 5 sec timer will start when "e" emited-----5 sec-after-"e"->[ef]-

我认为这:

.buffer(source$.throttleTime(5000).debounceTime(5000))

在rxjs 5中完成工作

梅尔

最好的选择是使用缓冲区。缓冲区有关闭条件,您想在引入新项目后5秒钟关闭条件。因此,假设您有一个源流,则所需的流将是:

source.buffer(source.throttle(5100).debounce(5000));

这是rxjs4。我认为rxjs的缓冲区运算符略有不同,但是想法是相同的。

说明:节流阀可确保在5100毫秒的情况下,您只会得到第一个“滴答声”。反跳将在5000毫秒后传播此“滴答声”,因为此后没有其他“滴答声”。请注意,我选择5100 mSecs是因为时间并不总是很完美,如果您同时使用5000 mSecs,则反跳可能会被重复延迟,您会感到饥饿。无论如何,您的缓冲区不会丢失数据,只是可以将其分组为大于5000毫秒的数据块。

Rxjs 5有一个bufferToggle运算符,它看起来可能是一个更好的选择,但是,由于时序问题,打开和关闭缓冲区都可能带来风险,并使数据丢失。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章