我是否需要通过组件中的订阅取消订阅 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();