2

利用可能な言語のリストを提供する LanguageService があります。このリストは、バックエンド リクエストによって初期化する必要があります。

getAvailableLanguages(): Observable<Language[]> {
    ...
    return this.http.get(ApiResources.LANGUAGE, requestOptions)
            .map(response => this.extractJson(response))
            .catch(error => this.handleError(error));
}

別のサービスが を呼び出すたびにバックエンドをリクエストすることは避けたいと思いますlanguageService.getAvailableLangauges()

必要な最初のリクエストの結果をキャッシュする良い方法は何でしょうか?

4

1 に答える 1

3

次のようにキャッシュできます。

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
}
于 2016-07-14T13:06:10.570 に答える