我试图限制我的应用程序中不必要的HTTP调用的数量,但每次我订阅一个Observable时,都会向服务器发出请求 . 有没有办法在不触发http请求的情况下订阅一个observable?我在服务中的观察看起来像这样:
getServices(): Observable<Service[]> {
return this.http.get(this.serviceUrl).map(res => res.json())._catch(err => err);
}
然后在我的组件中,我订阅了这样的observable:
this.serviceService.getServices().subscribe(services => this.services = services);
我想要实现的是以某种方式将数据存储在服务本身上(这样我就可以在整个应用程序中使用该数据,而无需单独对每个组件发出请求,但我也想知道组件何时接收该数据(我通常按订阅做的) .
1 回答
不确定我是否正确理解了您的问题,但似乎您希望在服务中缓存第一个HTTP请求的结果,因此如果第一个组件获取数据,则第二个组件(另一个订户)将检索缓存的数据 . 如果是这种情况,请在模块级别声明服务提供者,以便Angular创建单个对象 . 然后在服务内部创建一个var,它在第一次检索后存储数据 .