簡體   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