2015-01-18 11 views
69

Ich muss eine Subskription für eine Observable erstellen, die sofort entsorgt wird, wenn sie zum ersten Mal aufgerufen wird.rxjs create subscribe once und dispose-Methode

Gibt es so etwas? Etwas wie observable_subscribeOnce (func)

Mein Anwendungsfall, ich erstelle ein Abonnement in einem Express-Route-Handler und das Abonnement wird mehrmals pro Anfrage aufgerufen.

Antwort

129

nicht 100% sicher über das, was Sie brauchen, aber wenn Sie nur den ersten Wert beobachten wollen, dann verwenden entweder first() oder take(1):

observable.first().subscribe(func); 
+9

Wird das Abonnement automatisch bereinigt? –

+25

Ja, tut es. Nimm und kündige beide ab, wenn ihre Bedingung erfüllt ist. – Brandon

+10

Warum sagt die Dokumentation nicht, dass sie das Abonnement automatisch entsorgt? – jzig

21

RxJS einige der besten Dokumentation hat habe ich jemals kommen über. Der folgende Link führt Sie zu einer äußerst hilfreichen Tabelle, die Anwendungsfälle den Operatoren zuordnet. Zum Beispiel sind unter dem Anwendungsfall "Ich möchte den ersten Wert nehmen" drei Operatoren: first, firstOrDefault und sample. Wenn eine beobachtbare Sequenz ohne Benachrichtigungen abgeschlossen wird, benachrichtigt der Operator first die Abonnenten mit einem Fehler, während der Operator firstOrDefault den Abonnenten einen Standardwert bereitstellt.

operator use case lookup

+2

Vielen Dank für das Teilen. Ich habe versucht, eine für meine Referenz zu erstellen und wusste nie, dass es dort bereits existiert :) – ATHER

+0

Sie sind herzlich willkommen @ATHER – DetweilerRyan