一个关于node流程控制的问题,喜欢写回调模式的可以看过来 async包括 顺序执行(series),瀑布流执行(waterfall),并行执行(parallel)(parallelLimit)这几个应该是常用的 直接上代码了,本人用的是async库
var async = require('async');
async.series([
function(cb){
setTimeout(function(){
cb(null, 1);
}, 1000);
},
function(cb){
setTimeout(function(){
cb(null, 2);
}, 1000);
}
], function(error, result){
if(error){
console.log(error);return;
}
console.log('parallel:消耗时间为数组的每个方法执行时间的总合, result的结果为每个方法的返回结果,和数组顺序对应');
console.log('parallel:',result);
});
/*并行执行*/
async.parallel([
function(cb){
setTimeout(function(){
cb(null, 1);
}, 1000);
},
function(cb){
setTimeout(function(){
var c = 1 + 100;
cb(null, c);
}, 1000);
}
], function(error, result){
if(error){
console.log(error);return;
}
console.log('parallel:消耗时间为数组中的执行最长的一个方法, result的结果为每个方法的返回结果,和数组顺序对应');
console.log('parallel:', result);
});
/*paramllelLimit参数是三个,第二个则为限制并行的数量*/
async.parallelLimit([
function(cb){
setTimeout(function(){
cb(null, 1);
}, 1000);
},
function(cb){
setTimeout(function(){
var c = 1 + 100;
cb(null, c);
}, 1000);
}
], 1, function(error, result){
if(error){
console.log(error);return;
}
console.log('parallelLimit:消耗时间为数组中的执行最长的一个方法, result的结果为每个方法的返回结果,和数组顺序对应');
console.log('parallelLimit:', result);
});