可能是一个愚蠢的问题,但无法轻松找到答案。
在Angular应用程序中,我Rxjs
用于进行http
调用以获取数据并将数据发布到服务器。假设我有一个服务MyService
,其方法如下:
getData() {
this.http
.get("mybackendurl/mydata")
.map(res => res.json())
.subscribe(data => this.data = data);
}
因此,假设我每次浏览页面时都在几个地方使用此方法。不管这样做有多方便,我的问题是,这不像一个Promise,它会开始和结束,据我所知,它会保持连接打开直到源终止,所以我需要以某种方式取消订阅每次我完成请求时?
由于订阅是在服务中完成的,而不是在组件中完成的,因此该服务不会被破坏,因此我担心我可能会创建多个订阅和连接,而不是重用相同的订阅和连接。
谢谢!
对于Http请求,您无需退订。它实际上完成了可观察性,因此您不会有任何内存泄漏。
您可以使用对象的add
功能进行检查Subscription
。取消订阅时将调用此函数。您也可以通过将complete
函数(第三个参数)传递给函数来进行检查,该函数subscribe
将在请求后被调用,这意味着可观察性已完成。
this.http
.get("mybackendurl/mydata")
.map(res => res.json())
.subscribe(data => this.data = data)
.add(() => console.log('Unsubscribed'));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句