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();
          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使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM