Я хочу реализовать динамическую загрузку статического ресурса в AngularJS с помощью Promises. Проблема: у меня есть пара компонентов на странице, которые могут (или нет, зависят от того, которые отображаются, таким образом динамические) должны получить статический ресурс с сервера. После загрузки он может быть кэширован для всего срока службы.
Я реализовал этот механизм, но я новичок в 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;
}
Итак, выполняется только один запрос, и все последующие вызовы loadDataPromise() возвращают первое обещание. Кажется, это работает для запроса, что в прогресс или тот, который уже закончился некоторое время назад.
Но это хорошее решение для кэширования Promises?