我有一个问题,我的组件很少需要来自后端的相同数据。所以他们都调用了getDataMethod();看起来如下所示
public getData(): Observable<any> {
return this.http.get<any>(this.backendUrl);
}响应在5秒内,在此期间,我大约调用此方法3-4次。所以,我的问题是,他们是否会把相同的可观察性返回给多个订阅者?
发布于 2017-12-20 13:55:37
您可以像这样以replaySubject的形式发布响应
public getData(): Observable<any> {
return this.http.get<any>(this.backendUrl)
.publishReplay(1)
.refCount();
}这将在每次有人订阅可观察到的api端点的情况下重放来自服务器的结果,而不调用api端点。
发布于 2017-12-20 20:46:40
您可以使用“缓存”变量。
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
});
}https://stackoverflow.com/questions/47907055
复制相似问题