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

  • 相关阅读:
    Sublime安装package control的操作
    Sublime的简单操作
    C# 泛型方法
    C# 数组的讲解(ArrayList 与List的区别)
    免费的天气API
    bootstrapValidator的验证
    sqlServer 多行合并为一行
    bootstrap的安装注意
    SQL数据库中把一个表中的数据复制到另一个表中
    JavaScript的误区
  • 原文地址:https://www.cnblogs.com/eczhou/p/7860395.html
Copyright © 2020-2023  润新知