我想缓存我的数据,但同时我需要我的数据是最新的。我发现这个:Angular2 easiest way to cache HTTP responses但这不会检查新的数据。缓存数据,但在后台检查新数据
我在我的服务现在有这样的:
public publishedSessions: Session[] = null;
getPublishedSessions(): Observable<any> {
let headers = new Headers();
headers.append('authorization', this.userService.getToken());
if (this.publishedSessions) {
this.http.get(this.apiUrl + 'api/sessions/published', {
headers: headers
})
.map(res => res.json().sessions)
.subscribe(sessions => this.publishedSessions = sessions);
return Observable.of(this.publishedSessions);
} else {
return this.http.get(this.apiUrl + 'api/sessions/published', {
headers: headers
})
.do(res => this.publishedSessions = res.json().sessions)
.map(res => res.json().sessions)
.catch((error) => Observable.of(error));
}
}
而且在我的组件一些标准代码:
handlePublishedSessions(): void {
this.subscriptionArr.push(this.sessionService.getPublishedSessions().subscribe(sessions => {
this.session = sessions
}));
}
这将导致页面的效果,当我第一次浏览(查看1) ,会打电话(打电话1)(通缉)。然后,如果我离开并返回到页面(访问2),来自呼叫1的数据将被返回(不需要),同时,呼叫2正在工作。因此,如果我然后再次导航并导航回(访问3),则来自呼叫2的数据将被返回。
我希望呼叫1的数据在前几毫秒显示在访问2上(直到呼叫2完成)。当呼叫2完成时,我希望数据被替换(无需用户交互)。
,你会期望在第二次访问是什么行为?你想要缓存的数据..你想要缓存的数据,并希望得到通知,如果第二个请求完成?请解释一下你想要的:) – mxii
现货!我编辑了这个问题:我希望呼叫1数据在前几毫秒显示在访问2上(直到呼叫2完成)。当呼叫2完成时,我希望数据被替换(无需用户交互)。 –