Angular2 & RxJS - 缓存一个接受参数的服务



我正在尝试向Angular2 HTTP服务添加缓存,但似乎无法弄清楚。

我关注了其他帖子,并使其完美地适用于不带任何参数的HTTP服务,例如

workSummaries = this.http.get('http://locahost:8080/teams')
            .map((response: Response) => response.json())
            .publishReplay(1, 3000)
            .refCount()
            .take(1);

但是,当我引入应该与请求一起发送的 teamId 参数时,我迷失在试图弄清楚我可以完成上述工作时。

因此,理想情况下,如果在过去 X 秒内使用了相同的 teamId,只需从缓存中读取,如果是新的 teamId 或 3 秒已过去,则调用该服务。

任何帮助都会很棒。

谢谢凯文。

您可以使用地图来维护团队ID/团队关联(我没有触及可观察的创建部分(:

summaries = new Map < number, Observable < Team >> ();
getTeam(id: number) {
  if (!this.summaries.get(id)) {
    let team = this.http.get('http://locahost:8080/teams/' + id)
      .map((response: Response) => response.json())
      .publishReplay(1, 3000)
      .refCount()
      .take(1);
    this.summaries.set(id, team)
  }
  return this.summaries.get(id);
}

最新更新