Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待1个承诺,然后使用$q等待所有承诺_Javascript_Angularjs_Asynchronous_Angular Promise_Q - Fatal编程技术网

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以确保代码是容错的。