Javascript 等待1个承诺,然后使用$q等待所有承诺
我非常熟悉Javascript 等待1个承诺,然后使用$q等待所有承诺,javascript,angularjs,asynchronous,angular-promise,q,Javascript,Angularjs,Asynchronous,Angular Promise,Q,我非常熟悉$q的工作原理,我在angularjs中使用它来等待使用$q.all()解决单个承诺和多个承诺 问题是,我不确定是否有可能做到这一点(并且它是否工作正常):我是否可以等待一个承诺得到解决,然后在我所有的承诺都得到解决时运行一些代码。。。在成功收回个人承诺后。。。例如: var promises = []; for(i=1, i<5, i++){ var singlePromise = SomeSevice.getData(); promises.push(sing
$q
的工作原理,我在angularjs中使用它来等待使用$q.all()
解决单个承诺和多个承诺
问题是,我不确定是否有可能做到这一点(并且它是否工作正常):我是否可以等待一个承诺得到解决,然后在我所有的承诺都得到解决时运行一些代码。。。在成功收回个人承诺后。。。例如:
var promises = [];
for(i=1, i<5, i++){
var singlePromise = SomeSevice.getData();
promises.push(singlePromise);
singlePromise.then(function(data){
console.log("This specific promise resolved");
});
}
// note: its important that this runs AFTER the code inside the success
// callback of the single promise runs ....
$q.all(promises).then(function(data){
console.log("ALL PROMISES NOW RESOLVED"); // this code runs when all promises also resolved
});
var承诺=[];
对于(i=1,i调用,然后
也会返回一个承诺。然后,您可以将其传递给数组,而不是原始承诺。这样,您的$q.all将在执行完所有之后
后运行
var promises = [];
for(i=1, i<5, i++){
// singlePromise - this is now a new promise from the resulting then
var singlePromise = SomeSevice.getData().then(function(data){
console.log("This specific promise resolved");
});
promises.push(singlePromise);
}
$q.all(promises).then(function(data){
console.log("ALL PROMISES NOW RESOLVED");
});
var承诺=[];
对于(i=1,iHi@lonesomeday),我对我的问题做了一个小改动;主要要求是all()在单个承诺的成功回调结束后运行回调!我看到了这一点,并删除了我的评论,因为它不再相关。所以你的问题实际上是。所有回调总是在最后一次单次承诺后启动。然后回调?听起来很棒-我会尝试一下。如果承诺失败,所有在承诺中停止,但是如果你在个人承诺中放上陷阱,连锁承诺会继续,每一个承诺的承诺都会在承诺的数组索引中不确定地返回。所有的。@ RafaelDantas -好点。不是我没有考虑它,而是我觉得它超出了这个问题的范围。ode以确保代码是容错的。