Node.js:for循环中每次迭代结束时的回调函数

Node.js:for循环中每次迭代结束时的回调函数,node.js,asynchronous,callback,Node.js,Asynchronous,Callback,在Node.js中,我有一个函数,它遍历整个元素列表并执行一些数据库调用,如下所示: for(var j=0; j<elements.length; j++) { //do some database calls } for(var j=0;j如果要并行进行数据库调用: numCompletedCalls = 0 for(var j=0; j<elements.length; j++) { callDatabase(function(results) {

在Node.js中,我有一个函数,它遍历整个元素列表并执行一些数据库调用,如下所示:

 for(var j=0; j<elements.length; j++)
 {
   //do some database calls
 }

for(var j=0;j如果要并行进行数据库调用:

 numCompletedCalls = 0
 for(var j=0; j<elements.length; j++)
 {
    callDatabase(function(results) {
       numCompletedCalls++;
       if (numCompletedCalls == elements.length)
          console.log("Done all calls!");

    });
 }

大多数人倾向于使用库,但我强烈建议您至少手动尝试一次所有异步模式,如果您打算并行进行数据库调用:

 numCompletedCalls = 0
 for(var j=0; j<elements.length; j++)
 {
    callDatabase(function(results) {
       numCompletedCalls++;
       if (numCompletedCalls == elements.length)
          console.log("Done all calls!");

    });
 }
大多数人倾向于使用库,但我强烈建议至少手动尝试一次所有异步模式

 function iterateElements(elements, index, callback) 
 {
    if (index == elements.length)
       return callback();
    // do database call with element
    var ele = elements[index];
    callDatabase(function(results) {
       iterateElements(elements, index+1, callback);
    });
 }
 iterateElements(elements, 0, function() {
    console.log("Done all calls!");
 });