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

Joe*_*e C 10 node.js node-async

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

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

Tom*_*Tom 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')
  }
);
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法获得所有任务的结果,即使出现错误也是如此。即所有错误的列表,并导致主回调。 (2认同)