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

时间:2017-12-20 13:23:25

标签: angular typescript rxjs

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

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

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

2 个答案:

答案 0 :(得分:0)

您可以将响应发布为像这样的重播主题

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

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

答案 1 :(得分:-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
       });
}