WebサービスからデータをロードしてlocalStorageに格納するAngularJS関数があります。この関数を初めて呼び出すと、(1時間後にキャッシュが無効でない限り)データはlocalStorageからロードされます。AngularJS:キャッシュされたURLまたはキャッシュされていないURLをロードする
私はこの機能を外部化したいと思いますが、私は頭を悩ませています。同期メソッドと非同期呼び出しを1つのメソッドに入れる方法です。さあ。
function callWebService(url) {
var resultFromLocalStorage = localStorage.getItem(url);
if (resultFromLocalStorage && Utils.cacheIsStillValid()) { //(*)
$timeout(function() { buildTable(JSON.parse(resultFromLocalStorage)); }, 10);
} else {
$resource(url).get().$promise.then(function(result) {
localStorage.setItem("cacheExpiry", new Date().getTime() + Utils.ONE_HOUR_IN_MS);
localStorage.setItem(url, JSON.stringify(result));
buildTable(result);
});
}
}
//*Utils.cacheIsStillValid checks the localStorage item "cacheExpiry"
最後に、私はちょうどこの欲しいので、私は、そのキャッシュのものを外部化したいと思います:
function callWebService(url) {
var result = getResultFromCacheOrReload(url); // to be done
buildTable(result);
}
私はこれをどのように行うことができますか?メソッドgetResultFromCacheOrReload(url)
はどのように見えますか?
おかげで、 ベルンハルト
あなたがすべきプロにキャッシュを残す。 etagsを設定してブラウザにキャッシュするように指示します。 –
お返事ありがとうございます。残念ながら私たちのサーバーにetagsを設定することはできません。 – Bernie