我正在学习Angular和RxJS。在阅读一本名为《 RxJS》的书籍时,我看到了两个运算符的提法。第一个接收并作为参数可观察到,第二个接收选择器函数。似乎两个缓冲区都基于这些参数缓冲内容。
它们之间有什么区别?什么时候应该使用缓冲区而不是bufferWhen运算符?
buffer
一次订阅其参数,该订阅的每次发射都发出信号通知当前缓冲区关闭并发射,从而重新启动缓冲区。
to的参数bufferWhen
是一个返回可观察值的函数。bufferWhen
调用它并立即订阅结果,等待发射信号通知其缓冲区关闭。至关重要的是,第一个发射将是唯一重要的发射,因为在该事件发生时,缓冲区关闭,对信号可观察信号的订阅结束,并且重复本段中的步骤,直到我们正在缓冲的可观察信号完成为止。
什么时候有用?有时,在缓冲可观察对象时,可能需要进行一些设置,然后才能在正确的时间发射信号。此设置可能涉及生成一些初始值,可能基于当前的“世界状况”,或者随机生成。在撰写本文时,所述的Rx文档用于bufferWhen
描述缓冲上,每次持续不同的随机持续时间的计时器的实例。
附录:为了可视化两者之间的区别,bufferWhen
使用buffer
以下命令查看实现非常有用:
const myBufferWhen = fn => buffer(
defer(fn).pipe(
take(1),
repeat()
)
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句