2016-08-14 10 views
7

私はこのパターンを使用している:RxJS 5からの退会はどのようにしてできますか?

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

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

私は、それによっておそらくメモリリークを作成退会する方法を参照することはできませんが。

私が尋ねる理由は、Angular 2's HTTP clientが同じパターンを使用しているからです。私はそれが何とか自動解除されていると信じていますが、同じことをしたいと思います。

+1

あなたは 'Subscription'をされ、戻り値を格納し、それからの退会する必要があります。 –

答えて

11

あなたはこのような何かをする必要があります

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

関数が構築されるまで、宣言されていない関数内の値を正常に取得できるかどうかはわかりませんでした。ほとんどの言語はそれを許可しません。ありがとう。 – Dan

+0

これは実質的に後で明確なイベントで呼び出される別の関数であるコールバックです –

関連する問題