Promises を使用して、AngularJS で静的リソースの動的読み込みを実装したいと考えています。問題: サーバーから静的リソースを取得する必要がある可能性がある (または表示されているかどうかに応じて動的である) ページにいくつかのコンポーネントがあります。ロードされると、アプリケーションの存続期間全体にわたってキャッシュできます。
私はこのメカニズムを実装しましたが、Angular と Promises は初めてなので、これが適切なソリューション \ アプローチであるかどうかを確認したいと考えています。
var data = null;
var deferredLoadData = null;
function loadDataPromise() {
if (deferredLoadData !== null)
return deferredLoadData.promise;
deferredLoadData = $q.defer();
$http.get("data.json").then(function (res) {
data = res.data;
return deferredLoadData.resolve();
}, function (res) {
return deferredLoadData.reject();
});
return deferredLoadData.promise;
}
したがって、リクエストは 1 つだけ行われ、loadDataPromise() への次の呼び出しはすべて、最初に行われた promise を取得します。進行中のリクエストや、しばらく前に終了したリクエストに対応しているようです。
しかし、Promise をキャッシュするのは良い解決策でしょうか?