首页 >web前端 >js教程 >Rx Observables 默认是冷的吗? 了解'发布”和'共享”的数据流

Rx Observables 默认是冷的吗? 了解'发布”和'共享”的数据流

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-29 22:40:29236浏览

 Are Rx Observables Cold by Default?  Understanding the Flow of Data with  `publish` and `share`

热 Observable 和冷 Observable:了解数据流

默认情况下所有 Rx Observable 都是冷的吗?

默认,除受试者外,所有 Rx 可观察量都是冷的。这意味着它们只有在至少有一个观察者订阅时才会发出值。

Rx 运算符将冷 Observables 变成热 Observables

有两个主要运算符可以将冷 observable 转换为热 observable:

  • publish:返回一个可连接的 observable,只有在连接时才会开始发出值。
  • share:与发布类似,但当第一个观察者订阅时它会自动连接可观察对象。

withLatestFrom 运算符和 Cold Observables

withLatestFrom不会改变可观察到的冷度或热度。在您的示例中:

  • cold$.withLatestFrom(sth$,...) 仍然是一个冷可观察对象。
  • 如果使用 withLatestFrom 订阅了多个可观察对象到 Cold$,则它们无论订阅时间如何,它们都会消耗相同的值序列。

Rx.fromEvent 和热/冷行为

您在CodePen 示例是因为该事件仅在单击元素时发出,而不是在订阅 Rx.fromEvent 可观察对象时发出。因此,对 observable 的每个订阅都会收到不同的事件。

冷 Observable 的简化流程图

为了说明冷 observable 的简化数据流:

Source -> Observer1 -> Observer2

Hot Observables 的简化流程图

对于 Hot Observables,流程是:

Source -> Subject -> Observer1 -> Observer2

主体充当中心枢纽,将传入数据多播给所有订阅的观察者。

多播运算符(发布/共享)

多播运算符在内部创建一个主题并返回一个可连接的可观察对象。当 observable 连接时,主体订阅上游 observable 并向所有订阅的观察者组播数据。

使用运算符时考虑数据流

理解数据流经营者的行为至关重要。即使可观察量是热的,考虑后续运算符如何影响其热或冷行为也很重要。

以上是Rx Observables 默认是冷的吗? 了解'发布”和'共享”的数据流的详细内容。更多信息请关注PHP中文网其他相关文章!

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