Buforowanie obiektu obietnicy w usłudze AngularJS
Chcę zaimplementować dynamiczne ładowanie zasobu statycznego w AngularJS za pomocą Promises. Problem: Mam na stronie kilka komponentów, które mogą (lub nie, zależą od tego, które są wyświetlane, a więc dynamiczne) muszą uzyskać statyczny zasób z serwera. Po załadowaniu może być buforowany przez cały okres użytkowania aplikacji.
Zaimplementowałem ten mechanizm, ale jestem nowym użytkownikiem Angular and Promises i chcę się upewnić, czy jest to właściwe rozwiązanie.
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;
}
Tak więc, jest tylko jedno żądanie, a wszystkie następne wywołania loadDataPromise () odzyskują pierwszą złożoną obietnicę. Wydaje się, że działa na żądanie, które jest w toku lub które już zakończyło się jakiś czas temu.
Ale czy jest to dobre rozwiązanie do buforowania obietnic?