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:
withLatestFrom Operator und Cold Observables
withLatestFrom ändert das nicht Kälte oder Hitze eines Beobachtbaren. In Ihrem Beispiel:
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.
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