我正在尝试编写一个在循环中调用异步函数的函数,并且只有在循环结束时,才能使用结果调用回调函数。
这样的事情:
function foo(cb){
var result;
for(var i=0; i < 999; i++){
asyncFunction(i, function(val){
do something with result
});
}
cb(result);
}
但我发现它在cb(result);
实际完成从asyncFunction
次调用中返回之前就已到达cb
。
在调用META-INF
之前,可以做些什么让它等待完成循环?承诺有帮助吗?
答案 0 :(得分:1)
异步库具有您需要的所有功能:http://caolan.github.io/async/
答案 1 :(得分:1)
也许这会对你有所帮助:
function asyncFunction (callback) {
// Do stuff
return callback()
}
function foo () {
var result = 0
for (var i = 0; i < 999;) {
asyncFunction(function () {
i++
result += i
})
}
console.log(result)
}
foo()