javascript - Javascript 和 Angular 中的链式 Promise

标签 javascript angularjs chaining

我正在使用 Angular 资源从 API 获取数据,方式如下:

var getAccountListPerUser = function () {

  return $resource(uri, {}, {
    get: {
      headers: service.getDefaultHeaderRequest(),
      method: 'GET',
      transformResponse: function (data) {
        var accountList = [];
        try {
          accountList = JSON.parse(data);
        } catch (e) {
          accountList = [];
        }
        return accountList;
      },
      isArray: true,
      cache: true
    }
  }).get().$promise;
};

在我的 Controller 中,我必须使用它以及以相同方式定义的另外两个服务函数。

var promiseResourcesAccountList = usrWebUserService.getAccountListPerUser();

promiseResourcesAccountList.then(function(result){
  $scope.usersWithAccountsAndProfiles = result;
  var filteredProfiles = [];
  for (var account in result) {
    ...
  }
  $scope.filteredProfiles = filteredProfiles;
});

还有:

var promiseResourcesEditUser = usrWebUserService.getResourcesUser(currentUser);

promiseResourcesEditUser.then(function (result) {
  usrWebUserFactory.mapBasicPreferences($scope, result);
});

还有另一个非常相似的信息,该信息在三个 div 中加载数据,但我只想在所有三个函数都正确完成时才显示它们。我想我必须把 promise 的结果链接起来。我怎样才能做到这一点?

最佳答案

你可以像这样链接它们:

promiseResourcesAccountList.then(function(result){
  ///whatever processing
  //return a promise
  return promiseResourcesEditUser()
}).then(function(){
  return anotherPromise();
}).then(function(){
   //update scope here
});

或者,您也可以使用 $q.all([promise1,promise2,promise3]).then(...);

关于javascript - Javascript 和 Angular 中的链式 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38921702/

相关文章:

javascript - 是否可以让 webpacks System.import 使用 ajax(用于进度事件)?

javascript - 减少和对象解构/赋值

javascript - ui-router 状态转换动画的替代方法

python - 在 Python 中使用索引删除项目的就地函数

java - 方法链接+继承2次或多次

Django ORM : Chaining aggregated querysets into one

javascript - 如何以始终生成唯一值的方式确定性地组合整数?

javascript - 当 url 位于文本输入中时,URL 未重定向

javascript - Angular Directive(指令)中的 Google map : How to change infoWindow HTML content

angularjs - 'EEE'是什么意思