Promise.all不起作用,但嵌套承诺是

时间:2016-07-25 21:30:33

标签: angularjs

在我的指令中,我有一些看起来像这样的东西:

myApp.directive('myDirective', function(s1, s2, s3) {
    return {
        restrict:'E',
        link: function($scope,) {
            s1.then(function(data) {
                $scope.s1 = data;
                s2.then(function(data) {
                    $scope.s2 = data;
                    s3.then(function(data) {
                        $scope.s3 = data;
                    });
                });
            });
        },
        templateUrl: '/static/partials/some-file.html'
    }
});

上面的代码按照我想要的方式工作和运行。然而,它看起来很难看,我宁愿做一些更清洁的事情。当我尝试使用Promise.all([s1, s2, s3]然后将结果存储到$scope并将其呈现为some-file.html时,它不起作用。

1 个答案:

答案 0 :(得分:0)

您的评论显示了问题:

Promise.all([s1, s2, s3])
.then(function(response) { 
  $scope.s1 = s1; 
  $scope.s2 = s2; 
  $scope.s3 = s3; 
});

响应是如何映射的:

Promise.all([s1, s2, s3])
.then(function(response) { 
  $scope.s1 = response[0]; 
  $scope.s2 = response[1]; 
  $scope.s3 = response[2]; 
});

但我建议使用$q.all作为抢劫建议。