码迷,mamicode.com
首页 > 其他好文 > 详细

async异步流程控制

时间:2017-08-27 11:55:14      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:error   null   没有   ror   done   安装   top   promise   之间   

http://cnodejs.org/topic/54acfbb5ce87bace2444cbfb

先安装:
G:\www\nodejs\one\models>npm install async --save-dev

1.串行无关联:async.series(tasks,callback);
多个函数依次执行,之间没有数据交换,其中一个函数出错,后续函数不再执行
//匿名函数前必须有键名(one:,two:)
async.series({
one: function(callback){
callback(null, 1);
},
two: function(callback){
callback(null, 2);
}
},function(err, results) {
console.log(results);
});
2.并行无关联:async.parallel(tasks,callback);
多个函数并行执行,最后汇总结果,如果某一个流程出错就退出
async.parallel({
one: function(callback){
callback(null, 1);
},
two: function(callback){
callback(null, 2);
}
},function(err, results) {
console.log(results);
});
3.串行有关联:waterfall
每一步执行时需要由上一步执行的结果当做参数.所以每一步必须串行等待
async.waterfall([
function (done) {

done(null, ‘one‘);
},
function (onearg, done) {

done(null, onearg + ‘| two‘);
},
function (twoarg, done) {

done(null, twoarg + ‘| three‘);
},
function (threearg, done) {

done(null, threearg + ‘| four‘);
}
], function (error, result) {
console.log(result);
console.timeEnd(‘waterfall‘);
})
4.parallelLimit(tasks, limit, [callback])

parallelLimit函数和parallel类似,但是它多了一个参数limit。
limit参数限制任务只能同时并发一定数量,而不是无限制并发,

async.parallelLimit([
function(callback){
callback(null, ‘one‘);
},
function(callback){
callback(null, ‘two‘);
}
],
2, //只允许同时有两个函数并行
function(err, results){
console.log(results);
});


//----------------另一种方式是用Promise
http://www.jdon.com/idea/nodejs/promise.html

async异步流程控制

标签:error   null   没有   ror   done   安装   top   promise   之间   

原文地址:http://www.cnblogs.com/yu-hailong/p/7439888.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!