2016-08-14 17 views
7

Bu desen kullanıyorum:Gözlemlenen bir RxJS 5 aboneliği nasıl iptal edilir?

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

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

Ancak böylelikle belki bir bellek sızıntısı oluşturarak çıkmak için herhangi bir yol göremiyorum.

Sormamın nedeni, Angular 2's HTTP client'un aynı kalıbı kullanmasıdır çünkü her nasılsa otomatik olarak aboneliği iptal edeceğime ve aynı şeyi yapmak istediğime inanıyorum.

+1

Bir 'Subscription' olan dönüş değerini depolamak ve bu çıkmak gerekir. –

cevap

11

Böyle bir şey yapmalıdır:

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

İşlev oluşturulduktan sonra deklare edilmeyen bir işlev içindeki bir değeri başarıyla yakalayabileceğinizi bilmiyordum. Çoğu dil buna izin vermez. Teşekkürler. – Dan

+0

Bu, belirli bir olayda daha sonra çağrılan başka bir işlev olan bir geri çağırmadır. –

İlgili konular