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?

questionAnswers(3)

yourAnswerToTheQuestion