NodeJs使用async让代码按顺序串行执行

描述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使用

相关文章
相关标签/搜索