【发布时间】:2017-03-05 21:36:38
【问题描述】:
我有一个调用异步函数的 for 循环。我需要这个函数然后在 for 循环结束时调用一个回调,但只有当我所有的异步函数都返回了它们的结果时。我试过这个:
for(var i = 0; i < vaccinsCount; i++){
getVaccinAddress(i, address, provider, function(result){
if(result.success){
console.log("result:" + result.values);
vaccines.push(result.values);
} else {
callback({success: false, message: result.message});
}
});
}
callback({success: true, values: vaccines});
相反,代码进入 for 循环,然后调用异步函数,然后直接退出。我怎么能解决这个问题?
getVaccinAddress 是执行服务器调用的异步函数。
编辑
我正在使用 NodeJS,因此解决方案是使用 bluebird,但是我不知道如何使用 bluebird 来实现。
【问题讨论】:
-
搜索 SO 和 google for loop async
-
我有,但我仍然不明白如何让它工作。
-
您的代码不完整,getVaccinAddress 函数中有什么?
-
它是异步函数。
-
如果
getVaccinAddress()抛出错误或者result.success不是true会发生什么?
标签: javascript asynchronous callback bluebird