使用angular2创建基本http缓存

时间:2017-05-05 14:59:48

标签: angular http caching promise angular-universal

我正在使用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中的承诺不是很熟悉。任何线索都会非常感激。

感谢。

0 个答案:

没有答案