首頁 >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:了解資料流

預設所有 Rx Observable 都是冷的嗎?

默認,除受試者外,所有 Rx 可觀察量都是冷的。這意味著它們只有在至少有一個觀察者訂閱時才會發出值。

Rx 運算子將冷Observables 變成熱Observables

有兩個主要運算子可以將冷observable 轉換為熱observable:

有兩個主要運算子可以將冷observable 轉換為熱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.圖

對於Hot Observables,流程是:

Source -> Subject -> Observer1 -> Observer2
主體充當中心樞紐,將傳入資料多播給所有訂閱的觀察者。

多播運算子(發佈/分享)

多播運算子在內部建立主題並傳回一個可連接的可觀察物件。當 observable 連線時,主體訂閱上游 observable 並向所有訂閱的觀察者組播資料。

使用運算符時考慮資料流

理解資料流經營者的行為至關重要。即使可觀察量是熱的,考慮後續運算子如何影響其熱或冷行為也很重要。

以上是Rx Observables 預設是冷的嗎? 了解「發布」和「共享」的資料流的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn