我是否需要通过组件中的订阅取消订阅 httpClient
Do I need to unsubscribe from httpClient with subscription in component
关于这个话题有很多问题和评论,但我有一个更具体的问题,问这个问题似乎很愚蠢,但我想确定一下。
我了解到您不需要取消订阅 angular 中的 HttpClient
电话,因为它会自动取消订阅。
但是如果我有一个具有此功能的单独服务:
服务
get() {
return this.httpClient.get('someurlhere');
}
然后让组件像这样使用它:
组件
this.service.get().subscribe(() => {});
我是否需要取消订阅,因为订阅现在在组件中?
很想知道这是否有任何不同。
你应该退订
没有关于内存泄漏的问题,因为 http observables 在第一次响应后完成。
但是你在订阅块中的逻辑可能会导致问题,
例如,如果您的 api 调用花费的时间太长,并且用户决定离开该页面,那么在这种情况下,由于您没有取消订阅可观察到的内容,您的逻辑(例如登录或订阅内的导航)可能会导致问题
特此通知您,此问题已在此处得到解答
详细答案可以参考这个link
是的。
这是你如何做的:
你创建一个变量:
private _subscription = new Subscription();
在您的代码中:
this._subscription.add(this.service.get().subscribe(() => {}););
ngOnDestroy():
this._subscription.unsubscribe();
关于这个话题有很多问题和评论,但我有一个更具体的问题,问这个问题似乎很愚蠢,但我想确定一下。
我了解到您不需要取消订阅 angular 中的 HttpClient
电话,因为它会自动取消订阅。
但是如果我有一个具有此功能的单独服务:
服务
get() {
return this.httpClient.get('someurlhere');
}
然后让组件像这样使用它:
组件
this.service.get().subscribe(() => {});
我是否需要取消订阅,因为订阅现在在组件中?
很想知道这是否有任何不同。
你应该退订
没有关于内存泄漏的问题,因为 http observables 在第一次响应后完成。
但是你在订阅块中的逻辑可能会导致问题, 例如,如果您的 api 调用花费的时间太长,并且用户决定离开该页面,那么在这种情况下,由于您没有取消订阅可观察到的内容,您的逻辑(例如登录或订阅内的导航)可能会导致问题
特此通知您,此问题已在此处得到解答
详细答案可以参考这个link
是的。 这是你如何做的: 你创建一个变量:
private _subscription = new Subscription();
在您的代码中:
this._subscription.add(this.service.get().subscribe(() => {}););
ngOnDestroy():
this._subscription.unsubscribe();