var async = require(‘async‘); // series 串形任务 console.time(‘cost‘) async.series({ two:function(callback){ setTimeout(function(){ console.log(‘串形任务two‘); //第一个参数 错误原因,当为真时,接收函数err参数接收到原因,并定为报错,停止执行后边的任务 callback(null,‘串形任务two 执行完毕‘); },1000) }, one:function(callback){ setTimeout(function(){ console.log(‘串形任务one‘); callback(null,‘串形任务one 执行完毕‘); },2000) }, },function(err,seriesRes){//如果callback第一个参数为真,err接收到第一个参数,判为任务错误,终止后续任务 console.log(err,seriesRes); console.timeEnd(‘cost‘) }) //parallel 并行任务 // 传递给最终的回调函数的是按任务生命顺序排列,而不是完成顺序 console.time(‘cost_p‘) async.parallel({ two:function(callback){ setTimeout(function(){ console.log(‘并行任务two‘); //第一个参数 错误原因,当为真时,接收函数err参数接收到原因,并定为报错,停止执行后边的任务 callback(null,‘并行任务two 执行完毕‘); },1000) }, one:function(callback){ setTimeout(function(){ console.log(‘并行任务one‘); callback(null,‘并行任务one 执行完毕‘); },2000) }, },function(err,seriesRes){//如果callback第一个参数为真,err接收到第一个参数,判为任务错误,终止后续任务 console.log(err,seriesRes); console.timeEnd(‘cost_p‘) }) // waterfall 瀑布形任务 console.time(‘cost_w‘) async.waterfall([ function(callback){ setTimeout(function(){ console.log(‘瀑布形任务 1‘); //第一个参数 错误原因,当为真时,接收函数err参数接收到原因,并定为报错,停止执行后边的任务 callback(null,‘咖啡‘); },1000) }, function(res,callback){ setTimeout(function(){ console.log(‘瀑布形任务 2‘); callback(null,res+‘+加糖‘); },1000) }, function(res,callback){ setTimeout(function(){ console.log(‘瀑布形任务 3‘); callback(null,res+‘+加牛奶‘); },1000) } ],function(err,seriesRes){//如果callback第一个参数为真,err接收到第一个参数,判为任务错误,终止后续任务 console.log(err,seriesRes); console.timeEnd(‘cost_w‘) }) //auto 多情况组合任务 // 例:做饭任务 console.time(‘做饭任务cost:‘) async.auto({ water:function(callback){ callback(null,‘水‘) }, flour:function(callback){ callback(null,‘面粉‘) }, mix:[‘water‘,‘flour‘,function(res,callback){ callback(null,res.water+"+"+res.flour+‘+和面‘); }], stream:[‘mix‘,function(res,cb){ cb(null,res.mix+‘+蒸馒头‘) }] },function(err,seriesRes){ console.log(err,seriesRes); console.timeEnd(‘做饭任务cost:‘) })
时间: 2024-11-07 04:51:14