Angular get Http从observable [duplicate]中获取一个实例

问题描述 投票:0回答:2

我有一个问题,我的组件中很少需要来自后端的相同数据。所以他们都调用getDataMethod();它看起来像这样

public getData(): Observable<any> {
  return this.http.get<any>(this.backendUrl);
}

在这段时间内响应5秒内我大致称这种方法3-4次。所以我的问题是他们是否可以将同一个观察者返回给多个订阅者?

angular typescript rxjs
2个回答
0
投票

您可以将响应发布为replaySubject,就像这样

public getData(): Observable<any> {
  return this.http.get<any>(this.backendUrl)
                .publishReplay(1)
                .refCount();
}

每次有人订阅observable时,这将重放服务器的结果,而不调用api端点。


-1
投票

你可以使用“缓存”变量。

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
       });
}
© www.soinside.com 2019 - 2024. All rights reserved.