2016-08-14 18 views
7

Używam tego wzoru:Jak zrezygnować z obserwowania RxJS 5?

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

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

Jednak nie widzę żadnych sposób wypisania co może tworzyć przeciek pamięci.

Powodem, dla którego pytam, jest to, że Angular 2's HTTP client używa tego samego wzorca - chociaż uważam, że automatycznie anuluje subskrypcję i chciałbym zrobić to samo.

+1

trzeba przechowywać zwracanej wartości, która jest do 'Subscription' i wypisać się z tego. –

Odpowiedz

11

Trzeba zrobić coś takiego:

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

Nie wiedziałem, że udało się przechwycić wartość w funkcji, która nie została zadeklarowana przed utworzeniem funkcji. Większość języków na to nie pozwoli. Dzięki. – Dan

+0

Jest to wywołanie zwrotne, które jest praktycznie inną funkcją, która jest wywoływana później w określonym zdarzeniu –

Powiązane problemy