Node.js 异步。完成所有迭代后的每个回调
我已经用我的头撞了这段代码几个小时了。此外,我以前多次使用过“async.each”。可能代码只是需要一组不同的眼睛才能工作。下面是代码和问题Node.js 异步。完成所有迭代后的每个回调,node.js,asynchronous,async.js,Node.js,Asynchronous,Async.js,我已经用我的头撞了这段代码几个小时了。此外,我以前多次使用过“async.each”。可能代码只是需要一组不同的眼睛才能工作。下面是代码和问题 async.each(process.argv, function(file, callback){ runFile(file, callback); }, function(err){ console.log("Here is the error!:" + err +"files to unstage: " + filesToUnst
async.each(process.argv, function(file, callback){
runFile(file, callback);
}, function(err){
console.log("Here is the error!:" + err +"files to unstage: " + filesToUnstage)
if(err)
console.log(err);
else{
if(filesToUnstage) {
__unstage();
}
}
});
运行文件:
function runFile(filename, callback) {
// Do a bunch of stuff ....
__parseOutput(output, callback);
}
__解析输出:
function __parseOutput(output, callback){
//Do some if else statement and do console.log
return callback(null);
}
问题:最终回调,即
async的函数(err){..}
。在所有迭代完成后,不会调用每个
所有问题都是由回调之间调用的异步方法引起的。我等待这个有问题的函数完成,然后调用回调
。在我的例子中,我使用了async.falter
等待,因为我必须将值从一个传递到另一个。对于类似问题,请阅读此问题的评论,特别是@Gepser
的评论 运行文件是否已执行?process.argv也是一个空数组吗?是的!一切都执行得很好,除了上面提到的最终回调之外,我从所有函数中获得了所需的输出。没有进程。argv
不是空的(交叉检查)。进入//执行一些if-else语句并执行console.log
也许你不调用你的callback你应该在每个函数中尝试console.log(callback)
,看看你是否真的在传递it@Gepser如您所见,有一个返回回调(null)
紧接着//执行一些if-else语句并执行console.log
。此回调
位于所有if-else
语句之外,位于\u parseOutput
函数的末尾。感谢您对console.log(callback)
的建议,但我已经尝试过了,它包含正确的callback
(如果多次调用,则抛出错误等)