1.异步的串行执行数组
async.series([ function(cb){ setTimeout(function(){ console.log('执行1'); cb(null,'a'); },1000) },function(cb){ setTimeout(function(){ console.log('执行2'); cb(null,'b'); },1000) },function(cb){ setTimeout(function(){ console.log('执行3'); cb(null,'c'); },1000) } ],function(err,results){ console.log(results) }) //依次打印 执行1 执行2 执行3 ['a','b','c']; //异步函数按添加顺序执行,在异步函数回掉中经过cb函数保存结果。 //最终的回调函数执行时,以前保存的结果会以数组的方式传入
2.异步并行执行异步
async.parallel([ function(cb){ setTimeout(function(){ console.log('执行1'); cb(null,'a'); },4000) },function(cb){ setTimeout(function(){ console.log('执行2'); cb(null,'b'); },1000) },function(cb){ setTimeout(function(){ console.log('执行3'); cb(null,'c'); },1000) } ],function(err,results){ console.log(results) }) //打印 执行2 执行3 执行1 ['a','b','c']
3.异步函数的依赖处理async
async.waterfall([ function(cb){ setTimeout(function(){ cb(null,'来自第1个函数','xxx') },5000) }, function(arg,arg2,cb){ console.log(arg) console.log(arg2) setTimeout(function(){ cb(null,'来自第2个函数') },1000) }, function(arg,cb){ console.log(arg) cb(null,'last') } ],function(err,result){ console.log(result) }) //依次打印 来自第1个函数 xxx 来自第2个函数 last