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

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

4

2 回答 2

11

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

使用以下代码,您的执行将如下所示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')
  }
);
于 2014-02-03T20:44:29.660 回答
1

是的,第二个任务被调用(因为任务应该是异步的并立即退出)。async.parallel回调从第一个失败的任务中调用错误

于 2014-02-03T20:41:58.150 回答