【问题标题】:How to unsubscribe from an RxJS 5 observable?如何取消订阅 RxJS 5 observable?
【发布时间】:2016-12-20 19:03:21
【问题描述】:

我一直在使用这种模式:

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

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

但是我看不到任何取消订阅的方法,因此可能会造成内存泄漏。

我问的原因是因为Angular 2's HTTP client 使用相同的模式 - 尽管我相信它会以某种方式自动取消订阅,我也想这样做。

【问题讨论】:

  • 您需要存储返回值 Subscription 并取消订阅。

标签: javascript angularjs angular typescript rxjs5


【解决方案1】:

你应该这样做:

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

【讨论】:

  • 我不知道您能否成功捕获函数中的值,该值在构造函数之后才声明。大多数语言都不允许这样做。谢谢。
  • 这是一个回调,实际上是另一个函数,稍后在确定事件时调用
猜你喜欢
  • 2016-07-07
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多