2012-12-17 55 views
0

我在我的NodeJS应用程序下面的代码:优雅的方式等回调之后调用回调函数返回

function someFileOperation(callback) { 
    var files = ...; 
    files.forEach(function (file) { 
     doSomethingAsync(file, function (err, result) { 

     }); 
    }); 
} 

什么是优雅的方式来调用someFileOperation()的回调情况下,所有doSomethingAsync()调用它们的回调函数并仅在doSomethingAsync()中发生错误时调用它一次?

现在,我想出了这样的事情:

function someFileOperation(callback) { 
    var files = ...; 
    var noFiles = files.length; 
    files.forEach(function (file) { 
     doSomethingAsync(file, function (err, result) { 
      if (err) { 
       callback(err); 
       callback = function() {}; // I don't want it to be called again 
      } else if (--noFiles <= 0) { 
       callback(null, true); 
      } 
     }); 
    }); 
} 

但我认为这是这样一个简单的任务很大的开销。所以我要寻找一个更优雅的方式或许为这些类型的问题

有点框架

回答