我需要取消订阅还是关闭浏览器选项卡即可解决?

问题描述 投票:0回答:1

我有一个在浏览器中运行的纯 JavaScript 应用程序。它有一些主题,有一些订阅者。我是否需要确保在浏览器关闭之前完成所有订阅?或者关闭或移动到另一个页面会进行清理并确保没有内存泄漏吗?我似乎无法找到是或否的答案或与 Angular 无关的答案。

rxjs
1个回答
0
投票

浏览器关闭 -> 不是问题,所有内存都被清除,您无需担心

最佳做法是确保所有订阅者都取消订阅。

示例场景 -> 您在

/user/:id
中定义了一个组件,该组件有多个订阅者,但您尚未取消订阅。您从
user/:id
移动到
/list
,然后再回到
user/:id
,那么订阅者会增加一倍,因为您没有取消订阅它们,这会累积并导致您的浏览器因内存泄漏而崩溃!

为了处理这个问题,我们可以取消订阅。我会推荐

takeUntilDestroyed
管道运算符,当组件/服务/指令被销毁时它会自动取消订阅!

当然还有其他方法,但这就是问题的关键。

取消订阅以避免由于不必要的订阅而导致内存泄漏和难以发现错误!

© www.soinside.com 2019 - 2024. All rights reserved.