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