我需要取消订阅组件中有订阅的httpClient吗



关于这个话题有很多问题和评论,但我有一个更具体的问题,问起来可能很愚蠢,但我想确定。

我已经读到,您不需要取消订阅angular中的HttpClient呼叫,因为它会自动执行此操作。

但如果我有一个单独的服务,有这个功能:

服务

get() {
return this.httpClient.get('someurlhere');
}

然后有一个组件像这样消耗它:

组件

this.service.get().subscribe(() => {});

然后我是否需要取消订阅,因为订阅现在在组件中?

很想知道这是否有什么不同。

您应该取消订阅

内存泄漏没有问题,因为http可观察性在第一次响应后完成。

但是订阅块中的逻辑可能会导致问题,例如,如果你的api调用花费了太长时间,用户决定离开页面,那么在这种情况下,由于你没有取消订阅可观察到的内容,你的逻辑,如登录或订阅内的导航,可能会导致问题

只是为了告诉你这个问题已经在这里回答了

是否有必要取消订阅Http方法创建的可观察性?

你可以参考这个链接了解的详细答案

是。你是这样做的:您创建了一个变量:

private _subscription = new Subscription();

在您的代码中:

this._subscription.add(this.service.get().subscribe(() => {}););

ngOnDestroy((:

this._subscription.unsubscribe();

相关内容

最新更新