这个可观察到的泄漏内存吗?

Does this observable leak memory?

根据 this article,我对 observables 还很陌生。下面的示例会泄漏内存。但是,我在网上看到了很多教程都展示了这样的例子。

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

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

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

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

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

其他所有内容,是的,您应该退订它们,因为它们会产生内存泄漏。

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

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

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