相关疑难解决方法(0)

在AngularJS服务中缓存promise对象

我想使用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;
}
Run Code Online (Sandbox Code Playgroud)

因此,只发出一个请求,并且对loadDataPromise()的所有下一次调用都会获得第一个承诺.它似乎适用于进展中的请求或前一段时间已经完成的请求.

但缓存Promises是一个很好的解决方案吗?

javascript promise angularjs angular-promise

35
推荐指数
1
解决办法
1万
查看次数

标签 统计

angular-promise ×1

angularjs ×1

javascript ×1

promise ×1