我试图将缓存添加到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秒已经过去,则调用该服务。
任何帮助都会很棒。
谢谢, 凯文。
答案 0 :(得分:3)
您可以使用Map来维护teamID /团队关联(我没有触及Observable创建部分):
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);
}