是否可以先解决promises,然后设置一个数组,然后为每个项创建一个指令?

时间:2015-11-25 14:29:33

标签: javascript angularjs

我想通过几个步骤执行代码。有可能吗?

  1. 首先,我要解决所有这些承诺

    $scope.recentReported = [];
    
    $scope.getRecentReported = function () {
      var dateToday = new Date();
      for (i = 0; i < $scope.recentDateLength; i++) {
        var dateThen = moment(dateToday).add(-i, 'days');
        RestRequestsSrvc.getRevenue(dateThen)
          .then(
            function (response) {
              if (response) {
                $scope.recentReported.push(response.date);
              }
            }
          );
      }
    };
    
  2. 当承诺得到解决后,我想根据$scope.recentUnreported计算$scope.recentReported。它将是一个包含不在$scope.recentReported

  3. 中的日期的数组
  4. 一旦完成,我想为$scope.recentUnreported

  5. 中的每个日期重复指示

3 个答案:

答案 0 :(得分:1)

可能是以下情况?代码未经测试。

的JavaScript

$scope.recentReported = [];

$scope.getRecentReported = function () {
  var dateToday = new Date();
  var promises = [];
  for (i = 0; i < $scope.recentDateLength; i++) {
    var dateThen = moment(dateToday).add(-i, 'days');
    promises.push(RestRequestsSrvc.getRevenue(dateThen));
  }
  $q.all(promises).then(function(response){
      for(var i = 0; i < response.length; i++){
          $scope.recentReported.push(response[i].date);
      }

      $scope.recentUnreported = $scope.getUnreported(); // Do what you need to do.
  });
};

HTML

<div my-directive ng-repeat="unreported in recentUnreported"></div>

答案 1 :(得分:0)

您可以等待使用Promise.all

解决所有承诺

然后,您将获得一个承诺,一旦解决,将具有一系列值,这是您可能正在寻找的。

答案 2 :(得分:0)

你可以使用$ q.all(promises)see here这会给你一个承诺,一旦所有的承诺得到解决,它就会得到解决。

希望有所帮助。