我是一名有用的助手,可以为您翻译文本。
我有一个名为"MyHttpService"的服务,其中包含一个可观察对象,如下所示:
我有两个组件:OneComponent 和 TwoComponent。这两个组件都注入了 "MyHttpService",并且依赖于 MyHttpService 返回的数据。
OneComponent 先加载,TwoComponent 在按钮点击后加载。
在每个组件的 onNgInit() 中,我有以下代码:
假设我在两个组件中都有订阅,那么是否正确假设不会调用多个HTTP请求,并且当TwoComponent加载时对“grabData()”的调用是OneComponent已经拉取的相同数据?或者它会发起新的调用?我希望避免对同一端点进行多个HTTP请求。如果每次调用具有此内容的组件时都会进行多个调用,那么处理这种情况的最佳方法是什么,以便我不必在初始化TwoComponent时多次调用服务?
我有一个名为"MyHttpService"的服务,其中包含一个可观察对象,如下所示:
grabData() {
return this.http.get('myaddress')
.map((res:Response) => {return res.json()})
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
我有两个组件:OneComponent 和 TwoComponent。这两个组件都注入了 "MyHttpService",并且依赖于 MyHttpService 返回的数据。
OneComponent 先加载,TwoComponent 在按钮点击后加载。
在每个组件的 onNgInit() 中,我有以下代码:
this.myHttpService.grabData()
.subscribe(
data => {
// do something to the data
});
假设我在两个组件中都有订阅,那么是否正确假设不会调用多个HTTP请求,并且当TwoComponent加载时对“grabData()”的调用是OneComponent已经拉取的相同数据?或者它会发起新的调用?我希望避免对同一端点进行多个HTTP请求。如果每次调用具有此内容的组件时都会进行多个调用,那么处理这种情况的最佳方法是什么,以便我不必在初始化TwoComponent时多次调用服务?
http
请求,对吗?因此基本上,直到至少有一个订阅者,http 请求结果将被共享,然后才会重复请求。在这里,AsyncSubject
似乎是更好的选择,你认为呢? - Max Koretskyi