我的 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);
}
});
});
}
但我认为对于这样一个简单的任务来说这是很多开销。所以我正在寻找一种更优雅的方式,或者可能是一个小框架来解决这些问题