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

  • 相关阅读:
    python变量及简单数据类型
    python函数小案例
    python字符串和列表小案例
    python循环输出
    Jmeter测试工具
    操作系统-进程管理~
    操作系统~
    组成原理第一章笔记~
    分时间段(年份或月份)统计,没有数字补0 Java(替代 MYSQL) 做法
    组成原理复习概略
  • 原文地址:https://www.cnblogs.com/eczhou/p/7860395.html
Copyright © 2011-2022 走看看