2016-08-14 2 views
7

Ich habe dieses Muster unter Verwendung von:Wie kann man sich von einem RxJS 5 Observable abmelden?

func myObservable() Observable<boolean> { 
    ... 
} 

func myFunc() { 
    myObservable().subscribe((cond: boolean) => { 
     if (cond) { 
      // How do I unsubscribe here? 
     } 
    }); 
} 

Allerdings kann ich keine Möglichkeit sehe dabei vielleicht austragen einen Speicherverlust zu schaffen.

Der Grund, warum ich frage ist, weil Angular 2's HTTP client das gleiche Muster verwendet - obwohl ich glaube, dass es automatisch abbestellt irgendwie und ich möchte das gleiche tun.

+1

Sie müssen den Rückgabewert speichern, die eine 'Subscription' ist und von diesem abmelden. –

Antwort

11

Sie sollten etwas tun:

func myFunc() { 
    var subscription = myObservable().subscribe((cond: boolean) => { 
     if (cond) { 
      // How do I unsubscribe here? 
      subscription.unsubscribe() 
     } 
    }); 
} 
+0

Ich wusste nicht, dass Sie einen Wert innerhalb einer Funktion, die erst deklariert wird, nachdem die Funktion erstellt wurde, erfolgreich erfassen konnten. Die meisten Sprachen erlauben das nicht. Vielen Dank. – Dan

+0

Das ist ein Rückruf, der praktisch eine andere Funktion ist, die später bei einem bestimmten Ereignis aufgerufen wird –

Verwandte Themen