0

根据这篇文章,我对 observables 还很陌生。下面的示例会泄漏内存。然而,我在网上看到了大量的教程展示了这样的例子。

someObservable.subscribe(data => {
   // do something
});

上面的代码是否泄漏内存?我们总是必须退订吗?http 调用呢?

this.http.get<Any>('someurl').subscribe(response => {
    // do something
});

observables 的一般最佳实践是什么?

4

1 回答 1

0

HTTP 调用和路由器事件是有限的,因此您不必取消订阅它们。

其他一切,是的,您应该取消订阅它们,因为它们会产生内存泄漏。

我喜欢使用async管道订阅和取消订阅我在 HTML 中呈现的数据。使用async管道,当组件被销毁时,observable 会自动取消订阅。对于事件订阅(实际.subscribe),我喜欢使用takeUntil运算符。

以下文章显示了何时取消订阅,但我总是在需要/组件被销毁时取消订阅。安全总比后悔好。

https://netbasal.com/when-to-unsubscribe-in-angular-d61c6b21bad3

于 2020-02-19T13:02:09.103 回答