parallel

async.parallel(tasks, [callback])

  • 并行执行多个函数,每个函数的值将按函数声明的先后顺序汇成一个数组,传给最终callback。
  • 如果中途有个函数出错,则将该err和已经完成的函数值汇成一个数组,传给最终的callback。还没有执行完的函数的值将被忽略,但要在最终数组中占个位置
  • 以json形式传入tasks,最终results也为json
async.parallel([
    (cb) => {
        setTimeout(() => {
            cb(null, 100);
        }, 100);
    },
    (cb) => {
        setTimeout(() => {
            cb(null, 200);
        }, 200);
    },
    (cb) => {
        setTimeout(() => {
            cb(null, 300);
        }, 300);
    }
], function (err, results) {
    log('1.1 err: ', err);
    log('1.1 results: ', results);
});

parallelLimit

async.parallelLimit(tasks, limit, [callback])

并行执行,同时最多 N 个函数并行,传给最终callback。

async.parallel({
    a(cb) => {
        setTimeout(() => {
            cb(null, 100);
        }, 100);
    },
    b(cb) => {
        setTimeout(() => {
            cb(null, 200);
        }, 200);
    },
    c(cb) => {
        setTimeout(() => {
            cb(null, 300);
        }, 300);
    }
}, 2, function (err, results) {
    log('1.1 err: ', err);
    log('1.1 results: ', results);
});