„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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

Veröffentlicht am 15.11.2024
Durchsuche:928

 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, außer Subjekten. Das bedeutet, dass sie nur Werte ausgeben, wenn sie von mindestens einem Beobachter abonniert wurden.

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

Es gibt zwei Hauptoperatoren, die kann eine kalte Observable in eine heiße Observable umwandeln:

  • publish: Gibt a zurück Verbindbares Observable, das erst dann mit der Ausgabe von Werten beginnt, wenn es verbunden ist.
  • share: Ähnlich wie „Publish“, aber es verbindet das Observable automatisch, wenn der erste Beobachter abonniert.

withLatestFrom Operator und Cold Observables

withLatestFrom ändert das nicht Kälte oder Hitze eines Beobachtbaren. In Ihrem Beispiel:

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

Rx.fromEvent und Heiß-/Kaltverhalten

Die Diskrepanz, die Sie im CodePen-Beispiel beobachtet haben, ist auf die Tatsache zurückzuführen, dass das Ereignis nur ausgegeben wird, wenn auf ein Element geklickt wird, und nicht, wenn das Observable Rx.fromEvent abonniert wird. Aus diesem Grund erhält jedes Abonnement des Observablen 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 Hot Observablen

Für heiße Observablen ist der Fluss:

Source -> Subject -> Observer1 -> Observer2

Das Betreff fungiert als zentraler Hub, eingehender Multicast Daten an alle abonnierten Beobachter.

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. Selbst wenn ein Observables heiß ist, ist es wichtig zu berücksichtigen, wie nachfolgende Operatoren sein heißes oder kaltes Verhalten beeinflussen können.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3