NodeJs使⽤async让代码按顺序串⾏执⾏
描述
由于nodejs中的函数调⽤都是异步执⾏的,⽽笔者在⼯程开发中函数A需要四五个参数,⽽这四五个参数值都是通过函数调⽤获得,因此按顺序写代码时,执⾏到函数A时,往往函数A需要的参数值因为参数的异步调⽤关系,所需参数都还是undefined。
解决思路是保证函数A执⾏之前,函数A所需的四五个参数值都已经获得,可以通过async来实现代码的串⾏执⾏。
版本
nodejs:  6.9.5
async: 2.2.0
步骤
1、⾸先安装async
npm install async --save
2、写async串⾏化代码
笔者函数A所需的参数a,b,c,d,e都是通过函数调⽤获得,但是这五个函数调⽤都是独⽴的,之间不会相互影响,因此可以选择async中的parrallel来实现,具体代码如下:
let async = require('async');
async.parallel({
paraA:function(done){
let paraA = invokeA();//参数paraA通过invokeA获得
done(null,paraA);
},
paraB:function(done){
let paraB = invokeB();
nodejs到底是干嘛用的呢done(null,paraB);
},
paraC:function(done){
let paraC = invokeC();
done(null,paraC);
},
paraD:function(done){
let paraD = invokeD();
done(null,paraD);
},
paraE:function(done){
let paraE = invokeE();
done(null,paraE);
}
},function(error, result){
func(result.paraA,result.paraB,result.paraC,result.paraD,result.paraE);//函数func需要参数
})
使⽤async时,result汇总了串⾏阶段的所有返回值,并可以在串⾏代码执⾏完毕后使⽤。
注意:如果所需串⾏的代码相互之间形成前后依赖关系,那么可以使⽤async中的series,具体使⽤⽅法为将上例中的parallel改为series。
更多async使⽤参考: