首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RxJS操作符“缓冲器”和"bufferWhen“之间有什么区别?

RxJS操作符“缓冲器”和"bufferWhen“之间有什么区别?
EN

Stack Overflow用户
提问于 2020-04-02 23:54:14
回答 1查看 740关注 0票数 4

我在学习角和RxJS。读了一本叫做“行动中的RxJS”的书,我看到两个运营商都提到了。第一个接收并可观察为一个参数,第二个接收一个选择器函数。基于这些参数,两种缓冲区内容似乎都是基于这些参数。

他们之间有什么区别?什么时候应该使用缓冲区而不是bufferWhen操作符?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-03 03:54:08

buffer订阅了它的参数一次,该订阅发出的每一次发出信号表示当前缓冲区关闭并发出信号,然后重新启动缓冲区。

bufferWhen的参数是一个返回可观察的函数。bufferWhen立即调用它并订阅结果,等待发出信号表示缓冲区关闭。关键的是,第一次发射将是唯一重要的,因为在这种情况下,缓冲区关闭,订阅信号可观测的结束,并在这一段中的步骤重复,直到可观察的缓冲完成。

这什么时候有用?有时,当缓冲一个可观察到的,你可能需要做一些设置,然后你才能在正确的时间发射信号。这个设置可能涉及生成一些初始值,可能是基于当前的“世界状态”,或者是随机生成的。在本文撰写之时,Rx文档 for bufferWhen描述了一个对计时器进行缓冲的示例,该定时器每次持续不同的随机持续时间。

增编:要可视化两者之间的差异,可以看到使用buffer实现的bufferWhen

代码语言:javascript
复制
const myBufferWhen = fn => buffer(
  defer(fn).pipe(
    take(1),
    repeat()
  )
);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61003061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档