关于这个话题有很多问题和评论,但我有一个更具体的问题,问起来似乎很愚蠢,但我想确定。
我了解到您无需取消订阅 angular 中的 HttpClient
调用,因为它会自动执行此操作。
但是如果我有一个具有此功能的单独服务:
服务
get() {
return this.httpClient.get('someurlhere');
}
然后让一个组件像这样使用它:
组件
this.service.get().subscribe(() => {});
然后我是否需要取消订阅,因为订阅现在在组件中?
很想知道这是否有什么不同。
答案 0 :(得分:2)
您应该退订
没有内存泄漏问题,因为http observables在第一次响应后完成。
但是您在订阅块中的逻辑可能会导致问题, 例如,如果您的 api 调用时间过长而用户决定离开页面,那么在这种情况下,由于您尚未取消订阅可观察对象,您的逻辑(例如,订阅中的登录或导航)可能会导致问题
只是通知你这个问题已经在这里回答
Is it necessary to unsubscribe from observables created by Http methods?
您可以参考此链接获取详细答案
答案 1 :(得分:1)
是的。 这是你如何做到的: 你创建一个变量:
private _subscription = new Subscription();
在您的代码中:
this._subscription.add(this.service.get().subscribe(() => {}););
ngOnDestroy():
this._subscription.unsubscribe();