我正在尝试向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);
}