美文网首页Node.js
Node流程控制库async

Node流程控制库async

作者: 俗三疯 | 来源:发表于2017-10-03 17:49 被阅读27次

async

异步的串行执行(有先后顺序)
async.series([function(callback){
    fs.readFile('file1.txt','utf-8',callback)
},function(callback){
    fs.readFile('file2.txt','utf-8',callback)
}],function(err,results){
    //results => [file1.txt,file2.txt]
})

series()适合无依赖的异步串行执行,但当前一个的结果是后一个调用的输入时,series()就无法满足需求。下面介绍的waterfall()可以解决这个问题

异步调用的依赖处理

async.waterfall([
    function(callback){
        fs.readFile('file1.txt','utf-8',function(err,content){
            callback(err,content);
        });
    },
    function(arg1,callback){
        //arg1 => file2.txt
        fs.readFile(arg1,'utf-8',function(err,content){
            callback(err,content);
        });
    },
    function(arg1,callback){
        //arg1 => file3.txt
        fs.readFile(arg1,'utf-8',function(err,content){
            callback(err,content)
        });
    }
],function(err,result){
    //result => file4.txt
})
异步的并行执行(同时进行)
async.parallel([function(callback){
    fs.readFile('file1.txt','utf-8',callback)
},function(callback){
    fs.readFile('file2.txt','utf-8',callback)
}
],function(err,results){
    //results => [file1.txt,file2.txt]
})
自动依赖处理

在现实的业务环境中,具有很多复杂的依赖关系,有异步的也有同步的,经常让人感觉混乱,理不清顺序,为此async提供一个强大的方法auto()实现业务处理
如下面这个例子:
connectMongoDB和connectRedis依赖readConfig,uploadAsserts依赖compileAsserts,startup则依赖所有完成,依赖关系如下

var deps = {
    readConfig:function(callback){
        //rad config file
        callback();
    },
    connectMongoDB:['readConfig',function(callback){
        //connect to mongodb
        callback();
    }],
    connectRedis:['readConfig',function(callback){
        //connect to redis
        callback();
    }],
    complieAsserts:function(callback){
        //compile asserts
        callback();
    },
    uploadAsserts:['compileAsserts',function(callback){
        //upload to assert
        callback();
    }],
    startup:['connectMongoDB','connectRedis','uploadAsserts',function(callback){
        //start up 
    }]
}

async.auto(deps);// auto方法能根据依赖关系自动分析,以最佳的顺序执行以上业务 

相关文章

  • Node流程控制库async

    async 异步的串行执行(有先后顺序) series()适合无依赖的异步串行执行,但当前一个的结果是后一个调用的...

  • async 异步编程框架

    Async介绍Async是一个流程控制工具包,提供了直接而强大的异步功能。基于Javascript为Node.js...

  • async介绍

    Async介绍 Async是一个流程控制工具包,提供了直接而强大的异步功能。基于Javascript为Node.j...

  • node 异步模式

    异步流程控制的包:Async Step

  • Async流程控制学习

    今天学习nodeJS深入浅出的第四章。node异步控制有提到Async的强大流程控制能力,我觉得有必要学习下,所以...

  • Nodejs异步流程框架async

    Nodejs异步流程框架async 标签(空格分隔): Node.js [TOC] Node.js 是一个基于 C...

  • Async 详解

    一:流程控制 为了适应异步编程,减少回调的嵌套,我尝试了很多库。最终觉得还是async最靠谱。 地址:https:...

  • nodejs async 使用简介

    async await node async 使用

  • 08 - 异步流程控制

    异步流程控制-async 安装: 串行无关联 async.series 按顺序依次执行tasks里面的多个异步函...

  • Node.js中Async详解:流程控制

    https://www.cnblogs.com/chunzhulovefeiyue/p/7229735.html

网友评论

本文标题:Node流程控制库async

本文链接:https://www.haomeiwen.com/subject/nfztyxtx.html