首页  >  文章  >  web前端  >  热还是冷:RxJS Observables 有什么区别?

热还是冷:RxJS Observables 有什么区别?

Susan Sarandon
Susan Sarandon原创
2024-10-28 21:59:02871浏览

 Hot or Cold: What's the Difference in RxJS Observables?

热和冷 Observable:揭示差异

冷与热:复习

RxJS 中的 Observable 可以分类无论是热还是冷。冷 observable 仅在订阅时才会发出值,而热 observable 无论订阅状态如何都会发出值。

已解决混乱

  • 全部RxJS 默认情况下是冷观测值?

    是的,除了主题。

  • 冷观测值可以转换为热观测值吗?

    是的,使用诸如publish()、share()之类的运算符以及多播运算符(publishValue、shareValue等)。

  • withLatestFrom 与 Cold Observables 的行为

    让 Cold$ 成为订阅的冷可观察值。 withLatestFrom(cold$, ...) 创建一个新的可观察量,它将在订阅后立即从 Cold$ 发出值,无论 Cold$ 最初何时订阅。

FromEvent () 和共享点击事件

RxJS.fromEvent() 默认创建冷 observable。但是,您提到的 CodePen 示例针对不同的订阅显示了不同的值,因为它使用 RxJS 版本 4,该版本对 fromEvent() 采用不同的行为。

冷热 Observables 的详细流程

Cold Observable:

  1. 订阅触发上游订阅链。
  2. 最后一个订阅执行一个处理源并向其发送数据的函数观察者。
  3. 数据向下游流向接收器观察者。

Hot Observable:

  1. 多播运算符创建一个主题并返回可连接的 observable。
  2. 对操作符的订阅订阅主题。
  3. 当调用 connect 时,主题订阅上游 observable,数据流向下游。

结论

了解通过可观察量的数据流和运算符的实现对于驾驭热和冷可观察量的复杂性至关重要。关键考虑因素是相对于订阅的数据发送时间以及由于多个订阅而丢失或重复数据的可能性。

以上是热还是冷:RxJS Observables 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn