繁体   English   中英

在循环内使用异步函数并仅在循环完成后调用回调

[英]Using async function inside a loop and calling a callback only after the loop has finished

我正在尝试编写一个在循环中调用异步函数的函数,并且仅在循环完成时才调用具有结果的回调。

像这样:

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 诺言会有所帮助吗?

异步库具有您需要的所有功能: http : //caolan.github.io/async/

也许这可以为您提供更多帮助:

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM