Heim >Web-Frontend >js-Tutorial >Sind Rx-Observablen standardmäßig kalt? Den Datenfluss mit „Publish' und „Share' verstehen

Sind Rx-Observablen standardmäßig kalt? Den Datenfluss mit „Publish' und „Share' verstehen

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 22:40:29236Durchsuche

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

Heiße und kalte Observablen: Den Datenfluss verstehen

Sind alle Rx-Observablen standardmäßig kalt?

Standardmäßig , alle Rx-Observablen sind kalt, mit Ausnahme von Subjekten. Das bedeutet, dass sie nur dann Werte ausgeben, wenn sie von mindestens einem Beobachter abonniert wurden.

Rx-Operatoren, um kalte Observablen in heiße Observablen umzuwandeln

Es gibt zwei Hauptoperatoren kann ein kaltes Observable in ein heißes Observable umwandeln:

  • publish: Gibt ein verbindbares Observable zurück, das erst dann Werte ausgibt, wenn es verbunden ist.
  • Teilen: Ähnlich wie Veröffentlichen, aber es verbindet das Observable automatisch, wenn der erste Beobachter es abonniert.

withLatestFrom Operator und Cold Observables

withLatestFrom ändert nichts an der Kälte oder Hitze eines Observablen. In Ihrem Beispiel:

  • cold$.withLatestFrom(sth$,...) wird immer noch eine kalte Observable sein.
  • Wenn mehrere Observablen mithilfe von withLatestFrom für cold$ abonniert sind, sind sie verbraucht jeweils die gleiche Wertefolge, unabhängig von den Abonnementzeiten.

Rx.fromEvent und Hot/Cold-Verhalten

Die Diskrepanz, die Sie im beobachtet haben CodePen-Beispiel ist auf die Tatsache zurückzuführen, dass das Ereignis nur ausgegeben wird, wenn auf ein Element geklickt wird, nicht wenn das Observable Rx.fromEvent abonniert wird. Aus diesem Grund erhält jedes Abonnement der Observable ein anderes Ereignis.

Vereinfachtes Flussdiagramm für kalte Observablen

Um den vereinfachten Datenfluss für kalte Observablen zu veranschaulichen:

Source -> Observer1 -> Observer2

Vereinfachtes Flussdiagramm für heiße Observablen

Für heiße Observablen ist der Fluss:

Source -> Subject -> Observer1 -> Observer2

Das Subjekt fungiert als zentraler Knotenpunkt , eingehende Daten per Multicast an alle abonnierten Beobachter senden.

Multicasting-Operatoren (veröffentlichen/teilen)

Multicasting-Operatoren erstellen intern ein Subjekt und geben ein verbindbares Observable zurück. Wenn das Observable verbunden ist, abonniert das Subjekt das Upstream-Observable und sendet Daten per Multicast an alle abonnierten Beobachter.

Berücksichtigen Sie den Datenfluss bei der Verwendung von Operatoren

Den Datenfluss verstehen und das Verhalten der Bediener ist entscheidend. Auch wenn ein Observables heiß ist, ist es wichtig zu berücksichtigen, wie nachfolgende Operatoren sein Heiß- oder Kaltverhalten beeinflussen können.

Das obige ist der detaillierte Inhalt vonSind Rx-Observablen standardmäßig kalt? Den Datenfluss mit „Publish' und „Share' verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn