什么';RxJS运营商之间的区别是什么;“缓冲区”;及;“什么时候?”;?
我正在学习Angular和RxJS。读了一本名为《RxJS在行动》的书,我看到两个操作符都提到了。第一个接收并可观察为参数,第二个接收选择器函数。似乎两个缓冲区的内容都基于这些参数什么';RxJS运营商之间的区别是什么;“缓冲区”;及;“什么时候?”;?,rxjs,Rxjs,我正在学习Angular和RxJS。读了一本名为《RxJS在行动》的书,我看到两个操作符都提到了。第一个接收并可观察为参数,第二个接收选择器函数。似乎两个缓冲区的内容都基于这些参数 他们之间有什么区别?什么时候应该使用缓冲区而不是bufferWhen运算符?buffer订阅其参数一次,该订阅的每次发射都会向当前缓冲区发出关闭和发射的信号,并重新启动缓冲区 bufferWhen的参数是一个返回可观察值的函数bufferWhen调用它并立即订阅结果,等待发射信号表示其缓冲区关闭。至关重要的是,第一次
他们之间有什么区别?什么时候应该使用缓冲区而不是bufferWhen运算符?
buffer
订阅其参数一次,该订阅的每次发射都会向当前缓冲区发出关闭和发射的信号,并重新启动缓冲区
bufferWhen
的参数是一个返回可观察值的函数bufferWhen
调用它并立即订阅结果,等待发射信号表示其缓冲区关闭。至关重要的是,第一次发射将是唯一重要的发射,因为在该事件发生时,缓冲区关闭,对可观测信号的订阅结束,本段中的步骤重复,直到我们正在缓冲的可观测信号完成
这什么时候有用?有时,在缓冲一个可观察对象时,您可能需要先进行一些设置,然后才能在正确的时间发出信号。这种设置可能涉及生成一些初始值,可能基于当前的“世界状态”,也可能是随机生成的。在撰写本文时,forbufferWhen
描述了一个计时器上的缓冲示例,该计时器每次持续不同的随机持续时间
附录:为了直观显示两者之间的差异,在使用buffer
实现时查看buffer非常有用:
const myBufferWhen = fn => buffer(
defer(fn).pipe(
take(1),
repeat()
)
);