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

  • 相关阅读:
    操作 Java 数组的 12 个最佳方法
    详解 JavaScript 中 splice() 方法
    Java 读取 .properties 配置文件的几种方式
    表单中单选、多选、选择框值的获取及表单的序列化
    一个调出上下文菜单的实例
    跨浏览器的事件侦听器和事件对象
    动态加载js和css
    php语言实现的7种基本的排序方法
    CORS(跨源资源共享)实战
    ubuntu中LAMP环境搭建及ubuntu语言和输入法设置
  • 原文地址:https://www.cnblogs.com/yu-hailong/p/7439888.html
Copyright © 2011-2022 走看看