「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Rx Observable はデフォルトでコールドですか? 「公開」と「共有」によるデータの流れを理解する

Rx Observable はデフォルトでコールドですか? 「公開」と「共有」によるデータの流れを理解する

2024 年 11 月 15 日に公開
ブラウズ:191

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

ホットおよびコールドのオブザーバブル: データの流れを理解する

すべての Rx オブザーバブルはデフォルトでコールドですか?

デフォルトでは、被験者を除いて、すべての Rx 観測値はコールドです。これは、少なくとも 1 人のオブザーバーがサブスクライブしている場合にのみ値を発行することを意味します。

コールド オブザーバブルをホット オブザーバブルに変えるための Rx オペレーター

主なオペレーターは 2 つあります。コールド オブザーバブルをホット オブザーバブルに変換できます:

  • publish:接続可能なオブザーバブルを返します。接続されている場合にのみ値の発行を開始します。
  • share: パブリッシュと似ていますが、最初のオブザーバーがサブスクライブするときにオブザーバブルを自動的に接続します。

withlatestFrom 演算子と Cold Observables

withlatestFrom はコールド性を変更しません。観測可能なものの熱さ。あなたの例では:

  • cold$.withlatestFrom(sth$,...) は依然としてコールドオブザーバブルです。
  • 複数のオブザーバブルが withlatestFrom を使用して cold$ にサブスクライブされている場合、それらは

Rx.fromEvent と Hot/Cold動作

CodePen の例で観察された矛盾は、Rx.fromEvent オブザーバブルがサブスクライブされたときではなく、要素がクリックされたときにのみイベントが発行されるという事実によるものです。このため、Observable への各サブスクリプションは異なるイベントを受け取ります。

Cold Observable の簡略化されたフロー図

Cold Observable の簡略化されたデータ フローを説明するには:

Source -> Observer1 -> Observer2

ホット オブザーバブルの簡略フロー図

ホット オブザーバブルのフローは次のとおりです:

Source -> Subject -> Observer1 -> Observer2

サブジェクトは中央ハブとして機能し、受信データをすべての購読者にマルチキャストしますobservers.

マルチキャスト オペレーター (公開/共有)

マルチキャスト オペレーターは内部でサブジェクトを作成し、接続可能なオブザーバブルを返します。オブザーバブルが接続されると、サブジェクトはアップストリームのオブザーバブルをサブスクライブし、サブスクライブされたすべてのオブザーバーにデータをマルチキャストします。

オペレーターを使用する際のデータ フローを考慮する

データ フローを理解するそしてオペレーターの行動が非常に重要です。たとえオブザーバブルがホットであっても、後続の演算子がそのホットまたはコールドの動作にどのような影響を与えるかを考慮することが重要です。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3