」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Rx Observables 預設是冷的嗎? 了解「發布」和「共享」的資料流

Rx Observables 預設是冷的嗎? 了解「發布」和「共享」的資料流

發佈於2024-11-15
瀏覽:148

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

熱 Observable 和冷 Observable:了解資料流

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

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

Rx 運算子將冷Observables 轉換為Hot Observables

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

  • publish: 回傳一個可連結的observable,只有在連線時才會開始發出值。
  • share:與publish類似,但是當第一個觀察者訂閱時它會自動連接observable。

withLatestFrom Operator 和 Cold Observables

withLatestFrom不會改變可觀察到的冷度或熱度。在你的例子中:

  • cold$.withLatestFrom(sth$,...) 仍然是一個冷可觀察的。
  • 如果使用 withLatestFrom 訂閱了多個可觀察的冷$,它們無論訂閱時間如何,每個都將消耗相同的值序列。

Rx.fromEvent 和Hot/Cold 行為

您在CodePen 範例是因為該事件僅在單擊元素時發出,而不是在訂閱Rx .fromEvent 可觀察物件時發出。因此,對可觀察量的每個訂閱都會收到不同的事件。

冷可觀察量的簡化流程圖

為了說明冷可觀察量的簡化資料流:

Source -> Observer1 -> Observer2

Hot Observables 的簡化流程圖

對於Hot Observables,流程為:

Source -> Subject -> Observer1 -> Observer2

主題充當中央集線器,將傳入資料多播到所有訂閱的觀察者。

多播運算子(發布/共享)

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

使用運算子時考慮資料流

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

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3