zoukankan      html  css  js  c++  java
  • 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使用

  • 相关阅读:
    数值的格式化
    最近开发的一个多功能选择器
    OCI22053: 溢出错误的原因和解决方法
    js的四舍五入问题
    Vista 下先安装 VS 再装 IIS 7 运行出现 500.19 Error 的解决方法
    最近开发的一个多功能选择器2
    Oracle REF Cursor 用法(转帖)
    Oracle 查询历史数据(转帖)
    HDU 1203 I NEED A OFFER! 动态规划(01背包)
    HDU 1160 FatMouse's Speed 动态规划
  • 原文地址:https://www.cnblogs.com/eczhou/p/7860395.html
Copyright © 2011-2022 走看看