我有一个LanguageService,它提供了可用语言的列表。该列表需要通过后台请求进行初始化:
getAvailableLanguages(): Observable<Language[]> {
...
return this.http.get(ApiResources.LANGUAGE, requestOptions)
.map(response => this.extractJson(response))
.catch(error => this.handleError(error));
}我希望避免每次另一个服务调用languageService.getAvailableLangauges()时都请求后端。
缓存必要的第一个请求的结果的好方法是什么?
发布于 2016-07-14 21:06:11
您可以像这样缓存它:
import { Observable } from 'rxjs/Observable'
import 'rxjs/add/observable/of'
// ...
getAvailableLanguages(): Observable<Language[]> {
return this._data ? Observable.of(this._data) : this.http.get(ApiResources.LANGUAGE, requestOptions)
.map(response => this.extractJson(response))
.catch(error => this.handleError(error))
}其中,this._data是缓存的响应,可由extractJson设置
extractJson(res) {
let json = res.json()
// something, set this._data ...
return this._data
}https://stackoverflow.com/questions/38374769
复制相似问题