这个问题在这里已有答案:
我有一个问题,我的组件中很少需要来自后端的相同数据。所以他们都调用getDataMethod();它看起来像这样
public getData(): Observable<any> {
return this.http.get<any>(this.backendUrl);
}
在这段时间内响应5秒内我大致称这种方法3-4次。所以我的问题是他们是否可以将同一个观察者返回给多个订阅者?
您可以将响应发布为replaySubject,就像这样
public getData(): Observable<any> {
return this.http.get<any>(this.backendUrl)
.publishReplay(1)
.refCount();
}
每次有人订阅observable时,这将重放服务器的结果,而不调用api端点。
你可以使用“缓存”变量。
data:any
public getData(): Observable<any> {
if (this.data)
return Observable.of(this.data);
else
return this.http.get<any>(this.backendUrl).do((data:any)=>
{
this.data=data
});
}