我需要手动取消订阅吗? - Angular 8
Do I need to unsubscribe manually? - Angular 8
我有一个简单的问题。
我是否需要手动取消订阅或 Angular 正在为我取消订阅,或者如果不取消订阅如何理解正在发生的事情?
谢谢。
在大多数情况下 - 是的。订阅时,几乎任何时候都必须取消订阅。但也有一些例外情况,您不必这样做,例如订阅 http 服务。
是的,您需要退订,有一些例外情况,例如 route
相关的可观察值。
您可以在这里找到不同的退订方式https://blog.bitsrc.io/6-ways-to-unsubscribe-from-observables-in-angular-ab912819a78f
如果您使用的是 async
管道,Angular 会在组件生命周期内为您处理订阅、订阅和取消订阅。
如果您已在组件内订阅,则在可观察对象未完成时需要取消订阅。
这里有一个非常 post 的主题(双关语!)。
是的,在很多情况下。如果不这样做,可能会导致内存泄漏。比如在组件中订阅ngOnInt()
中的一个observable,在ngOnDestroy()
中取消订阅是正常的。
如前所述,您并不总是必须手动取消订阅,例如在使用某些特定运算符(如 take
时)。如果您在模板中使用 async
,则无需手动取消订阅。此外,也没有必要取消订阅已注册一次的服务中的 Observables。
我有一个简单的问题。 我是否需要手动取消订阅或 Angular 正在为我取消订阅,或者如果不取消订阅如何理解正在发生的事情?
谢谢。
在大多数情况下 - 是的。订阅时,几乎任何时候都必须取消订阅。但也有一些例外情况,您不必这样做,例如订阅 http 服务。
是的,您需要退订,有一些例外情况,例如 route
相关的可观察值。
您可以在这里找到不同的退订方式https://blog.bitsrc.io/6-ways-to-unsubscribe-from-observables-in-angular-ab912819a78f
如果您使用的是 async
管道,Angular 会在组件生命周期内为您处理订阅、订阅和取消订阅。
如果您已在组件内订阅,则在可观察对象未完成时需要取消订阅。
这里有一个非常
是的,在很多情况下。如果不这样做,可能会导致内存泄漏。比如在组件中订阅ngOnInt()
中的一个observable,在ngOnDestroy()
中取消订阅是正常的。
如前所述,您并不总是必须手动取消订阅,例如在使用某些特定运算符(如 take
时)。如果您在模板中使用 async
,则无需手动取消订阅。此外,也没有必要取消订阅已注册一次的服务中的 Observables。