Angular HttpClient 取消订阅

Ant*_*ian 6 observable rxjs angular

是否需要取消订阅ObservableAngularHttpClient的方法返回?

例如:

this.http.get(url).subscribe(x => this.doSomething());
Run Code Online (Sandbox Code Playgroud)

我需要取消订阅此订阅吗?我问这是因为我不知道 Angular 是否自己处理它。此外,请求是一次性的,而不是连续的。我倾向于认为我不需要。你怎么看?

根据以下帖子: Angular/RxJs 我何时应该取消订阅“订阅”

RxJS 处理一次性订阅,但我在他们的文档中没有找到任何内容。

sib*_*ain 10

不,您无需取消订阅。它一直观察直到从 api 得到响应。一旦 Http 请求完成,它就会自动取消订阅。

参考这个

为什么不取消订阅 Http Observables

角度指南 http

异步管道


Pra*_*eep 0

有两种方法可以处理这个问题:

1)是的,如果你在ts文件中正常订阅observable,你必须手动取消订阅。通常我们可以在 ngOnDestroy() 生命周期方法中取消订阅

2)如果您在角度模板中的可观察对象上使用异步管道语法,那么它会自动关闭订阅

observable | async 
Run Code Online (Sandbox Code Playgroud)

请参阅以下内容: https: //angular.io/api/common/AsyncPipe