我有一个使用Q库异步返回值的函数。 而且我必须在循环内调用它以将所有结果填充到数组中。
我一直在研究的示例(由于数组在填充之前已返回,因此无法按预期工作)。
$city
我已经读到可以使用Q.all来调用几个函数,但是我不明白如何在循环内调用它。
感谢您的帮助。
答案 0 :(得分:2)
尝试一下:
function fillArray(){
var promises = [];
for(var i = 0; i < numberOfElements; i++){
promises.push(asyncFunction(i));
}
return q.all(promises);
}
function asyncFunction(number){
var deferred = q.defer();
deferred.resolve(number+1);
return deferred.promise;
}
promise.all()被拒绝的原因与第一个被拒绝的承诺相同。这意味着,如果数组中的某些promise被拒绝,则all
返回的promise也将被拒绝。如果您要等待所有原始诺言得到兑现,可以使用promise.allSettled()。
答案 1 :(得分:0)
我做到了
fillArray().then(function(result){
console.log(result);
});
,它工作正常。
只有我从您的代码中获得的额外收益正在改变
var resultsArray = [];