我们是不是需要取消订阅完成/错误输出的可观察对象?

Posted

技术标签:

【中文标题】我们是不是需要取消订阅完成/错误输出的可观察对象?【英文标题】:Do we need to unsubscribe from observable that completes/errors-out?我们是否需要取消订阅完成/错误输出的可观察对象? 【发布时间】:2017-05-11 03:15:56 【问题描述】:

当我知道 observable 肯定会完成时(通过completeerror 通知)我的组件/类超出范围之前,我还需要取消订阅吗防止内存泄漏?换句话说,完成/错误的 observable 是否会自动清理,所以我不必担心?

【问题讨论】:

【参考方案1】:

Observable Contract订阅和取消订阅部分对您的问题具有明确的意义。它指出:

当 Observable 向其观察者发出 OnError 或 OnComplete 通知时,这将结束订阅。观察者不需要发出 Unsubscribe 通知来结束由 Observable 以这种方式结束的订阅。

可观察的终止部分也提到了这一点:

当 Observable 向其观察者发出 OnError 或 OnComplete 通知时,订阅结束。

所以,不,没有必要取消订阅已完成或出错的 observables。但是,这样做并没有坏处。

【讨论】:

以上是关于我们是不是需要取消订阅完成/错误输出的可观察对象?的主要内容,如果未能解决你的问题,请参考以下文章

Rxjs:将中间订阅和完整的可观察对象合并,并整体完成

如何取消订阅 observable

如何取消订阅角度组件中的多个可观察对象?

取消订阅 Rxjs Observables

我试图取消订阅一个可观察的角度但我收到错误,例如取消订阅不存在

React 如何订阅在另一个组件中声明的可观察对象