zoukankan      html  css  js  c++  java
  • async异步流程控制

    http://cnodejs.org/topic/54acfbb5ce87bace2444cbfb

    先安装:
    G:www odejsonemodels>npm install async --save-dev

    1.串行无关联:async.series(tasks,callback);
    多个函数依次执行,之间没有数据交换,其中一个函数出错,后续函数不再执行
    //匿名函数前必须有键名(one:,two:)
    async.series({
    one: function(callback){
    callback(null, 1);
    },
    two: function(callback){
    callback(null, 2);
    }
    },function(err, results) {
    console.log(results);
    });
    2.并行无关联:async.parallel(tasks,callback);
    多个函数并行执行,最后汇总结果,如果某一个流程出错就退出
    async.parallel({
    one: function(callback){
    callback(null, 1);
    },
    two: function(callback){
    callback(null, 2);
    }
    },function(err, results) {
    console.log(results);
    });
    3.串行有关联:waterfall
    每一步执行时需要由上一步执行的结果当做参数.所以每一步必须串行等待
    async.waterfall([
    function (done) {

    done(null, 'one');
    },
    function (onearg, done) {

    done(null, onearg + '| two');
    },
    function (twoarg, done) {

    done(null, twoarg + '| three');
    },
    function (threearg, done) {

    done(null, threearg + '| four');
    }
    ], function (error, result) {
    console.log(result);
    console.timeEnd('waterfall');
    })
    4.parallelLimit(tasks, limit, [callback])

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

    async.parallelLimit([
    function(callback){
    callback(null, 'one');
    },
    function(callback){
    callback(null, 'two');
    }
    ],
    2, //只允许同时有两个函数并行
    function(err, results){
    console.log(results);
    });


    //----------------另一种方式是用Promise
    http://www.jdon.com/idea/nodejs/promise.html

  • 相关阅读:
    cocos2dx遇到的一些坑
    cocos2dx场景切换的坑
    整合quickx到普通cocos2dx
    Hadoop、spark
    Redis高级特性及应用场景
    wpf相关好资源
    MVVM模式的几个开源框架
    ASP.NET的IIS映射
    NET 开发者必备的工具箱
    C#开源汇总
  • 原文地址:https://www.cnblogs.com/yu-hailong/p/7439888.html
Copyright © 2011-2022 走看看