async.js 学习记录 - 杨军军前端研究
async.js 主要解决 node异步函数的流程控制,常用的场景如下:
多个异步依次顺序执行,后面异步函数的结果不依赖前面异步函数的输出
async.series([ function(callback) { doAsync1(arg, callback); }, function(callback) { doAsync2(arg, callback); }, function(callback) { doAsync3(arg, callback); }], function(err, result) { console.log(result);});
多个异步依次顺序执行,且后面异步函数的依赖前面异步函数的输出
async.waterfall([ function(callback) { adouble(2, callback); }, function(arg, callback) { adouble(arg, callback); }, function(arg, callback) { adouble(arg, callback); }], function(err, result) { console.log(result);});
多个异步并行执行,当所有异步函数执行完成后执行回调函数,回到函数的参数为之前异步函数执行结果的数组,如果需要限制并行执行的数量可以使用
parallelLimit
async.parallel([ function(callback) { doAsync1(arg, callback); }, function(callback) { doAsync2(arg, callback); }, function(callback) { doAsync3(arg, callback); }], function(err, result) { console.log(result);});
参考
https://github.com/caolan/async#seriestasks-callback