我有一个在浏览器中运行的纯 JavaScript 应用程序。它有一些主题,有一些订阅者。我是否需要确保在浏览器关闭之前完成所有订阅?或者关闭或移动到另一个页面会进行清理并确保没有内存泄漏吗?我似乎无法找到是或否的答案或与 Angular 无关的答案。
浏览器关闭 -> 不是问题,所有内存都被清除,您无需担心
最佳做法是确保所有订阅者都取消订阅。
示例场景 -> 您在
中定义了一个组件,该组件有多个订阅者,但您尚未取消订阅。您从/user/:id
移动到user/:id
,然后再回到/list
,那么订阅者会增加一倍,因为您没有取消订阅它们,这会累积并导致您的浏览器因内存泄漏而崩溃!user/:id
takeUntilDestroyed
管道运算符,当组件/服务/指令被销毁时它会自动取消订阅!
当然还有其他方法,但这就是问题的关键。
取消订阅以避免由于不必要的订阅而导致内存泄漏和难以发现错误!