我正在使用angular universal来预渲染服务器中的站点。由于我的应用程序需要进行一些http调用来初始化,我想实现一个缓存,它将缓存服务器中发出的请求,当在客户端再次请求时,我想使用缓存的值而不是再次发送请求
我的设置:
http服务:
public get(url: string): Promise<any> {
if (this._cache.has(url)) {
var retProm = new Promise(() => {
return this._cache.get(url);
});
return retProm;
}
return this.http.get(url, {withCredentials: true}).toPromise()
.then((data) => {
if(isNode){
this._cache.set(url, data);
}
this.extractData(data);
})
.catch(this.handleError);
}
我的缓存服务:
constructor(public _cache: Map<string, any>) {}
has(key: string | number): boolean {
let _key = this.normalizeKey(key);
return this._cache.has(_key);
}
set(key: string | number, value: any): void {
let _key = this.normalizeKey(key);
this._cache.set(_key, value);
}
get(key: string | number): any {
let _key = this.normalizeKey(key);
return this._cache.get(_key);
}
用法:
this.httpService.get(url).then((data: DataType) => { //usage },(error: any) => console.error(error));}
这在没有使用cahce时工作正常,但在使用缓存时返回undefined。提出这个问题的其他方法是,假设你有一个变量数据,并希望创建一个http get的副本,通过将变量上的数据作为响应返回,而不必更改
来电功能,怎么做?
我对angular2中的承诺不是很熟悉。任何线索都会非常感激。
感谢。