当所有的任务完成后,async.parallel仍然会调用最后的callback函数,如果其中任何一个得到错误?

var async = require('async'); async.parallel([ function(cb) { cb(true); }, function(cb) { cb(null, true); }], function(error, results) { } ); 

在代码中,如果第一个任务在第二个任务之前运行cb(true),第二个任务是否仍然运行? 如果是这样,完成后,主callback仍然会被调用?

async.parallel并行执行所有function。 如果任何函数将错误传递给它的callback函数(callback函数的第一个参数不为空),那么主callback函数会立即调用错误的值。 所有的function将被执行。

用下面的代码你的执行如下1, 3, 2, 2.1

 var async = require('async'); async.parallel([ function(cb) { console.info('1') cb(true); }, function(cb) { console.info('2') cb(null, true); }, function(cb) { console.info('2.1') cb(null, true); }], function(error, results) { console.info('3') } ); 

是的,第二个任务被调用(因为任务预计是asynchronous并立即退出)。 async.parallelcallback被调用,从第一个失败的任务错误