async.parallel是否会在完成所有任务之后调用最终回调,如果它们中的任何一个出错?

时间:2014-02-03 20:31:28

标签: node.js node-async

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

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

2 个答案:

答案 0 :(得分:10)

async.parallel并行执行所有功能。如果任何函数将错误传递给其回调(回调第一个参数不为null),则使用错误值调用主回调立即。所有功能都将被执行。

使用以下代码,您的执行将如下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')
  }
);

答案 1 :(得分:1)

是的,调用第二个任务(因为任务应该是异步的并立即退出)。从第一个失败的任务

调用async.parallel回调时出错