Erstellen Sie ein one-time-Abo
Brauche ich zum erstellen eines Abonnements für einen Observable
wird sofort entsorgt, wenn er zuerst genannt.
Gibt es so etwas wie:
observable.subscribeOnce(func);
Meine, ich bin ein Abonnement erstellen, die in einer express route-handler und das Abonnement wird mehrfach aufgerufen wird, pro request.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht 100% sicher über das, was Sie brauchen, aber wenn Sie nur wollen, zu beobachten, der erste Wert, dann verwenden Sie entweder
first()
odertake(1)
:Hinweis:
.take(1)
und.first()
beide Abmelden automatisch, wenn Ihre Bedingung erfüllt istUpdate von RxJS 5.5+
Kommentar von Coderer.
Hier ist, warum
first
? sicherlichlast
oderpop
ist das, was unser Gehirn hören wollenobservable.pipe(first()).subscribe(func)
, wofirst
kommt ausrxjs/operators
.RxJS hat einige der besten Dokumentation, die ich jemals über gekommen sind. Nach der Balg link gelangen Sie zu einem überaus hilfreichen Tabelle mapping Anwendungsfälle zu den Operatoren. Zum Beispiel, unter der "ich möchte den ersten Wert" use case sind drei Operatoren:
first
,firstOrDefault
, undsample
.Hinweis, wenn eine beobachtbare Sequenz abgeschlossen mit keine Benachrichtigungen, dann die
first
Betreiber benachrichtigt Abonnenten mit einem Fehler, während diefirstOrDefault
Betreiber stellt einen Standardwert für die Abonnenten.Betreiber use-case-lookup
Ergänzen @Brandon Antwort, mit
first()
oder ähnliches ist auch wichtig für die Aktualisierung einerBehaviorSubject
basierend auf seinerObservable
. Beispielsweise (ungetestet):