Javascript can';t获得$q。所有的工作都有多个承诺

Javascript can';t获得$q。所有的工作都有多个承诺,javascript,angularjs,angular-promise,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)

我真的很挣扎。。。我的控制器中有一个函数生成一定数量的承诺,传递给另一个函数,该函数也生成承诺

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。所有配置都有,但没有成功。任何帮助都会很酷!!感谢您忽略您创建的无限递归循环,让我们这样做吧

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

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

需要注意的一点是,您正在传入值和键,但使用的是“item”。您需要使用value。

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

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

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

需要注意的一点是,您正在传入值和键,但使用的是“item”。您需要使用value。

通过从myFunction中递归调用myFunction,您处于无限循环中,但从未给出何时不调用myFunction的条件。如果我没记错,您需要在处理程序中使用“return”。而且,对了,我还没有发现递归。你能告诉我们使用
$q.all()
方法的尝试吗,因为这似乎是正确的方法。你在一个无限循环中,从myFunction中递归调用myFunction,但从未给出何时不调用myFunction的条件。如果我没记错,你需要“return”在你的处理器中。对,我还没有发现递归。你能告诉我们使用
$q.all()
方法的尝试吗,因为在我看来这是正确的方法。当然,函数停止是有条件的。我只是想发布最短的代码。谢谢你的回答!当然,函数停止是有条件的。我只是想发布最短的代码。谢谢你的回答!