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

  • 相关阅读:
    64位操作系统Visual Studio连接本机oracle的问题
    解决Oracle启动失败
    通过应用程序域AppDomain加载和卸载程序集
    C#应用程序实现单例模式
    不实现 INotifyPropertyChanged接口也能实现数据绑定
    WPF弹出“选择文件夹”对话框
    Linux常用命令
    markedown基本语法
    git使用
    用户打开浏览器,输入buidu.com页面展示百度首页。整个过程发生了什么?
  • 原文地址:https://www.cnblogs.com/yu-hailong/p/7439888.html
Copyright © 2011-2022 走看看