2017-09-06 2 views
4

In RxJS heißen Observables Observables, die einen externen Hersteller verwenden, aber ein kalt beobachtbares verwenden einen lokalen Hersteller (siehe z. B. RxJS Hot vs Cold Observable by Ben Lesh).Hot vs Cold Observables im Angular

Winkel HttpClient.post verwendet Kaltobservablen zum Senden von Daten und Wiederholungen, wenn Sie einen Anruf tätigen.

Gibt es in Angular einen Weg zu wissen, ob eine bestimmte Methode eine heiße oder kalte Observable verwendet?

+0

Mögliches Duplikat von [Unterschied zwischen kalten oder heißen HTTP-Anfragen?] (Https://Stackoverflow.com/questions/42815886/difference-between-cold-or-hot-http-requests) – jonrsharpe

+3

Ich glaube nicht und ich glaube, es spielt in der Praxis keine Rolle, um ehrlich zu sein. Folge einfach dem gesunden Menschenverstand :). Zum Beispiel, wie Sie sagten, "HttpClient.post" ist kalt, aber ['ActivatedRoute.params'] (https://angular.io/api/router/ActivatedRoute) ist eine heiße Observable, die Sinn macht (es ist eine Instanz von Subject tief im Inneren , das muss existieren, selbst wenn du es nicht abonniert hast). – martin

Antwort

5

Nein Dokumentation ist die sicherste Wette. Außerdem stimme ich @ martin's Kommentar nicht zu, es ist absolut wichtig. Sie müssen mit kalten Observablen vorsichtig sein, um das erneute Abonnieren teurer Operationen zu vermeiden (z. B. durch Multicasting oder Speichern des Ergebnisses für ein Subjekt).

Sie müssen sich auch auf die Dokumentation verlassen, um zu wissen, wann/wie eine Observable abgeschlossen ist. Zum Beispiel müssen Sie sich keine Sorgen über das Abmelden von HttpClient.post machen, weil Sie wissen, dass es abgeschlossen wird, wo ActivatedRoute.params niemals abgeschlossen wird, und Sie möglicherweise einen Speicherverlust generieren können, wenn Sie nicht wie takeUntil verwenden oder das Abonnement verfolgen .

* EDIT: Eigentlich, um zu klären, müssen Sie vorsichtig sein mit allen Observablen, nicht nur kalte Observablen. Heiße Observablen können auch teure Arbeitslasten erzeugen.

Verwandte Themen