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

  • 相关阅读:
    numpy百题冲关,pandas百题冲关
    mapreduce过程以及相关类总结
    mapreduce,数据结构和类型介绍
    精确度、召回率、混淆矩阵的关系
    小程序点击图片放大效果 单张图片 多张图片
    小程序动态添加class及调接口传递多个参数
    小程序for循环嵌套
    小程序富文本转换
    jquery函数加载及生成随机数
    微信小程序 swiper 显示图片计数 当前/总数
  • 原文地址:https://www.cnblogs.com/yu-hailong/p/7439888.html
Copyright © 2011-2022 走看看