nodejs中async使用

waterfall , parallel ,  series  ,  eachSeries 

//var async = require('async');

/***
 *①
 * 串行有关联 执行每个函数
 * waterfall  前一个函数的输出作为后一个的输入
 *
 *
 */
// var a = 10;
// async.waterfall([
//     function (cb) {
//         console.log("getb")
//         setTimeout(function () {
//             if (a == 0) {
//                 cb(new Error("a不能为0"));
//             } else {
//                 var b = 1 / a;
//                 cb(null, b); //在这里通过回调函数把b传给下一个函数,记得一定要加上null,才能调用数组中得下一个函数,否则,会直接调用最终的回调函数,然后结束函数,则后面的函数将不再执行
//             }
//         }, 1000);
//     },
//     function (b, cb) {
//         setTimeout(function () {
//             console.log("getc")
//             var c = b + 1;
//             cb(null, c);
//         }, 1000);
//     }
// ], function (err, result) {
//     if (err) {
//         console.log(err);
//     } else {
//         console.log('c:' + result)
//     }
// });

/**
 * ②并行且无关联
 * parallel 并行无依赖
 * 并行执行每个函数
 */

// async.parallel([
//         //并行同时执行
//         function(callback) {
//             setTimeout(function() {
//                 callback(null, 'one');
//             }, 200);
//         },
//         function(callback) {
//             setTimeout(function() {
//                 callback(null, 'two');
//             }, 100);
//         }
//     ],
//
//     function(err, results) {
//         //等上面两个执行完返回结果
//         console.log(results[0]);
//         console.log(results[1]);
//     });


/***
 * ③
 * series 串行无关联执行函数组
 */
// console.time('series');
// var async = require('async');
//
// async.series({
//     one: function (done) {
//         //处理逻辑
//         done(null, 'one');
//     },
//     two: function (done) {
//         //处理逻辑
//         done(null, 'tow');
//     },
//     three: function (done) {
//         //处理逻辑
//         done(null, 'three');
//     },
//     four: function (done) {
//         //处理逻辑
//         done(null, 'four');
//     }
// }, function (error, result) {
//     console.log('one:', result.one);
//     console.log('two:', result.two);
//     console.log('three:', result.three);
//     console.log('four:', result.four);
//     console.timeEnd('series');
// })


/**
 * ④
 *  eachSeries 是一个个按顺序执行
 * @type {[number,number]}
 */

// var arr = [300,600];
// async.eachSeries(arr, function(item, callback) {
//     setTimeout(function(){
//          console.log(item);
//         //这个函数告诉eachSeries函数,这个异步操作状态,是成功了,还是失败了,传(false)null表示这个异步成功完成,true(1)执行失败,还未执行的不再执行
//          callback(null);
//         //callback("发生异常");
//     }, item);
//
// }, function(err) {
//     //所有的异步成功执行完成,err等于null
//     console.log("成功执行了");
// });

async文档地址    https://caolan.github.io/async/docs.html#parallel

原文地址:https://www.cnblogs.com/moris5013/p/9645616.html