【发布时间】:2018-07-09 01:03:31
【问题描述】:
可能是一个愚蠢的问题,但无法轻易找到答案。
在一个 Angular 应用程序中,我使用 Rxjs 进行 http 调用以获取数据并将其发布到服务器。假设我有一个服务MyService,其方法如下:
getData() {
this.http
.get("mybackendurl/mydata")
.map(res => res.json())
.subscribe(data => this.data = data);
}
所以,假设我在几个地方使用这种方法,并且每次我导航到一个页面时。 不管这样做是否方便,我的问题是,这不像一个承诺,它开始和结束,据我所知,这会保持连接打开,直到源终止,所以我需要以某种方式取消订阅每次我完成请求?
由于订阅是在服务中而不是在组件中完成的,因此服务不会被破坏,因此我担心我可能会创建多个订阅和连接,而不是重复使用同一个。
谢谢!
【问题讨论】:
-
注意你的冷/热 Observables (medium.com/@benlesh/hot-vs-cold-observables-f8094ed53339)。一个热的可以发射多次,例如您调用 .next() 的主题。其他的,比如 http 调用给你一个冷的 Observable,它只完成(或失败)一次。
标签: angular typescript rxjs