zoukankan      html  css  js  c++  java
  • nodejs之async异步编程

    首先登场的是series函数,它的作用是串行执行,一个函数数组中的每个函数,每一个函数执行完成之后才能执行下一个函数,示例如下:

    async.series({
        one: function(callback){
            callback(null, 1);
        },
        two: function(callback){
            callback(null, 2);
        }
    },function(err, results) {
       
    });
    

    series函数的第一个参数可以是一个数组也可以是一个JSON对象,参数类型不同,影响的是返回数据的格式,如示例中的参数为数组,返回的results应该是这样的'[1,2]'。

    waterfall(tasks, [callback]) 

    waterfall和series函数有很多相似之处,都是按顺序依次执行一组函数,不同之处是waterfall每个函数产生的值,都将传给下一个函数,而series则没有这个功能,示例如下:

    async.waterfall([  
        function(callback){ 
          //task1 
          callback(null,1);       
        },function(data,callback){
          //task1 
          callback(null,2); 
        } 
    ],function(err,results){  
        console.log(results); 
    });
    

    另外需要注意的是waterfall的tasks参数只能是数组类型。  

    parallel(tasks, [callback])

    parallel函数是并行执行多个函数,每个函数都是立即执行,不需要等待其它函数先执行。 传给最终callback的数组中的数据按照tasks中声明的顺序,而不是执行完成的顺序,示例如下:

    async.parallel([
        function(callback){
            callback(null, 'one');
        },
        function(callback){
            callback(null, 'two');
        }
    ],
    function(err, results){
     
    });
    

    tasks参数可以是一个数组或是json对象,和series函数一样,tasks参数类型不同,返回的results格式会不一样。  

    parallel(tasks, [callback])

    parallel函数是并行执行多个函数,每个函数都是立即执行,不需要等待其它函数先执行。 传给最终callback的数组中的数据按照tasks中声明的顺序,而不是执行完成的顺序,示例如下:

    async.parallel([
        function(callback){
            callback(null, 'one');
        },
        function(callback){
            callback(null, 'two');
        }
    ],
    function(err, results){
     
    });
    

    tasks参数可以是一个数组或是json对象,和series函数一样,tasks参数类型不同,返回的results格式会不一样。

    parallelLimit(tasks, limit, [callback])

    parallelLimit函数和parallel类似,但是它多了一个参数limit。 limit参数限制任务只能同时并发一定数量,而不是无限制并发,示例如下:

    async.parallelLimit([
        function(callback){
            callback(null, 'one');
        },
        function(callback){
            callback(null, 'two');
        }
    ],
    2,
    function(err, results){
     
    });
    

      

  • 相关阅读:
    BEC listen and translation exercise 44
    中译英12
    BEC listen and translation exercise 43
    中译英11
    BEC listen and translation exercise 42
    中译英10
    BEC listen and translation exercise 41
    中译英9
    BEC listen and translation exercise 40
    中译英8
  • 原文地址:https://www.cnblogs.com/labihua/p/4534196.html
Copyright © 2011-2022 走看看