zoukankan      html  css  js  c++  java
  • nodejs中async使用

    waterfall , parallel ,  series  ,  eachSeries 

    //var async = require('async');
    
    /***
     *①
     * 串行有关联 执行每个函数
     * waterfall  前一个函数的输出作为后一个的输入
     *
     *
     */
    // var a = 10;
    // async.waterfall([
    //     function (cb) {
    //         console.log("getb")
    //         setTimeout(function () {
    //             if (a == 0) {
    //                 cb(new Error("a不能为0"));
    //             } else {
    //                 var b = 1 / a;
    //                 cb(null, b); //在这里通过回调函数把b传给下一个函数,记得一定要加上null,才能调用数组中得下一个函数,否则,会直接调用最终的回调函数,然后结束函数,则后面的函数将不再执行
    //             }
    //         }, 1000);
    //     },
    //     function (b, cb) {
    //         setTimeout(function () {
    //             console.log("getc")
    //             var c = b + 1;
    //             cb(null, c);
    //         }, 1000);
    //     }
    // ], function (err, result) {
    //     if (err) {
    //         console.log(err);
    //     } else {
    //         console.log('c:' + result)
    //     }
    // });
    
    /**
     * ②并行且无关联
     * parallel 并行无依赖
     * 并行执行每个函数
     */
    
    // async.parallel([
    //         //并行同时执行
    //         function(callback) {
    //             setTimeout(function() {
    //                 callback(null, 'one');
    //             }, 200);
    //         },
    //         function(callback) {
    //             setTimeout(function() {
    //                 callback(null, 'two');
    //             }, 100);
    //         }
    //     ],
    //
    //     function(err, results) {
    //         //等上面两个执行完返回结果
    //         console.log(results[0]);
    //         console.log(results[1]);
    //     });
    
    
    /***
     * ③
     * series 串行无关联执行函数组
     */
    // console.time('series');
    // var async = require('async');
    //
    // async.series({
    //     one: function (done) {
    //         //处理逻辑
    //         done(null, 'one');
    //     },
    //     two: function (done) {
    //         //处理逻辑
    //         done(null, 'tow');
    //     },
    //     three: function (done) {
    //         //处理逻辑
    //         done(null, 'three');
    //     },
    //     four: function (done) {
    //         //处理逻辑
    //         done(null, 'four');
    //     }
    // }, function (error, result) {
    //     console.log('one:', result.one);
    //     console.log('two:', result.two);
    //     console.log('three:', result.three);
    //     console.log('four:', result.four);
    //     console.timeEnd('series');
    // })
    
    
    /**
     * ④
     *  eachSeries 是一个个按顺序执行
     * @type {[number,number]}
     */
    
    // var arr = [300,600];
    // async.eachSeries(arr, function(item, callback) {
    //     setTimeout(function(){
    //          console.log(item);
    //         //这个函数告诉eachSeries函数,这个异步操作状态,是成功了,还是失败了,传(false)null表示这个异步成功完成,true(1)执行失败,还未执行的不再执行
    //          callback(null);
    //         //callback("发生异常");
    //     }, item);
    //
    // }, function(err) {
    //     //所有的异步成功执行完成,err等于null
    //     console.log("成功执行了");
    // });
    

    async文档地址    https://caolan.github.io/async/docs.html#parallel

  • 相关阅读:
    GridControl控件绑定RepositoryItemImageComboBox 作为下拉框使用
    ASP.NET MVC 扩展数据验证 转
    ASP.NET MVC Razor HtmlHelper扩展和自定义控件
    Thread锁 Monitor类、Lock关键字和Mutex类
    C# Thread.Join()用法的理解 转
    Redis集群高可用
    .Net Core中GC分析及调优总结-干货
    数据库之MySQL部署MGC方案(四)
    数据库之MySQL部署PXC方案(三)
    数据库之MySQL部署MGR方案(二)
  • 原文地址:https://www.cnblogs.com/moris5013/p/9645616.html
Copyright © 2011-2022 走看看