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

相關文章
相關標籤/搜索