描述html
因为nodejs中的函数调用都是异步执行的,而笔者在工程开发中函数A须要四五个参数,而这四五个参数值都是经过函数调用得到,所以按顺序写代码时,执行到函数A时,每每函数A须要的参数值由于参数的异步调用关系,所需参数都仍是undefined。node
解决思路是保证函数A执行以前,函数A所需的四五个参数值都已经得到,能够经过async来实现代码的串行执行。npm
版本异步
nodejs: 6.9.5async
async: 2.2.0函数
步骤ui
一、首先安装asyncspa
npm install async --save
二、写async串行化代码code
笔者函数A所需的参数a,b,c,d,e都是经过函数调用得到,可是这五个函数调用都是独立的,之间不会相互影响,所以能够选择async中的 parrallel来实现,具体代码以下:htm
let async = require('async'); async.parallel({ paraA:function(done){ let paraA = invokeA();//参数paraA经过invokeA得到 done(null,paraA); }, paraB:function(done){ let paraB = invokeB(); 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须要参数paraA,paraB...... })
使用async时,result汇总了串行阶段的全部返回值,并能够在串行代码执行完毕后使用。
注意:若是所需串行的代码相互之间造成先后依赖关系,那么可使用async中的series,具体使用方法为将上例中的parallel改成series。
更多async使用参考:async使用