我对$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
});
我的问题是,这是否工作,因为我觉得是这样,还是有一些奇怪的异步,非确定性结果的风险?
嗨@lonesomeday,我对我的问题做了一个小改动;主要的要求是all()回调在单个promise的成功回调完成后运行! – rex
我看到了,并删除了我的评论,因为它不再相关。 – lonesomeday
因此,你的问题实际上是否在最后的'singlePromise.then'回调之后,'.all'回调总是被触发**? – devqon