angular 2 - 缓存 http 获取结果
angular 2 - cache http get result
我有一个提供可用语言列表的语言服务。
此列表需要由后端请求初始化:
getAvailableLanguages(): Observable<Language[]> {
...
return this.http.get(ApiResources.LANGUAGE, requestOptions)
.map(response => this.extractJson(response))
.catch(error => this.handleError(error));
}
我想避免每次另一个服务调用时都请求后端 languageService.getAvailableLangauges()
。
缓存第一个必要请求的结果的好方法是什么?
你可以这样缓存它:
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
}
我有一个提供可用语言列表的语言服务。 此列表需要由后端请求初始化:
getAvailableLanguages(): Observable<Language[]> {
...
return this.http.get(ApiResources.LANGUAGE, requestOptions)
.map(response => this.extractJson(response))
.catch(error => this.handleError(error));
}
我想避免每次另一个服务调用时都请求后端 languageService.getAvailableLangauges()
。
缓存第一个必要请求的结果的好方法是什么?
你可以这样缓存它:
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
}