这个可观察到的泄漏内存吗?
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
根据 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