无法获得$ q.all的多项承诺

时间:2016-03-04 22:48:02

标签: javascript angularjs angular-promise

我真的很挣扎......我的控制器中有一个函数会产生一定数量的承诺,传递给另一个也能产生承诺的函数......

angular.forEach($scope.items,function(value,key) {
   myService.getPage(item).then(function(data) {
      myFunction(data)
   });

function myFunction(singlePage) {
   myService.getPage(singlePage.next).then(function(data) {
     myFunction(data)
   });
}

我想要实现的是以何种方式知道所有承诺何时得到解决

我试图将我的承诺包装在一个数组中并将其传递给$ q.all,但是没有成功。任何一种帮助都会非常酷!感谢

1 个答案:

答案 0 :(得分:2)

忽略你创建的无限递归循环,让我们这样做......

var allPromises = [];
angular.forEach($scope.items,function(value,key) {
    allPromises.push(myService.getPage(value));
});

$q.all(allPromises)
    .then(function (arrayOfResults) {
        // do something
    });

有一点需要注意,你传递的是价值和关键,但使用“项目”。你需要使用价值。