zoukankan      html  css  js  c++  java
  • nodejs中的异步流程序控制nsync

    异步编程是指由于异步I/O等因素,无法同步获得执行结果时,
    在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数、ajax请求等等
    http://cnodejs.org/topic/54acfbb5ce87bace2444cbfb
    并不是node中的,但是我们开发中经常使用
    使用npm init初始化项目
    安装cnpm install async --dev
    https://www.npmjs.com/package/async
    http://caolan.github.io/async/
    创建一个文件
    async.js
    导入async
    var async = require('async')
    console.time('test')

    //串行无关联,时间为两次时间之和,用法一
    async.series([
    function (callback) {
    setTimeout(function(){
    callback(null, 'one')
    }, 2000)
    },
    function (callback) {
    setTimeout(function(){
    callback(null, 'two')
    }, 5000)
    }
    ], function(err, results){
    console.log(results)
    console.timeEnd('test')
    })

    //串行无关联,时间为两次事件之和,用法二
    async.series({
    one: function (callback) {
    setTimeout(function(){
    callback(null, '1')
    }, 1000)
    },
    two: function (callback) {
    setTimeout(function(){
    callback(null, '2')
    }, 2000)
    }
    }, function(err, results){
    console.log(results)
    console.timeEnd('test')
    })
    //并行无关联,等待事件为最长时间请求过程
    async.parallel([
    function (callback) {
    setTimeout(function(){
    callback(null, 'one')
    }, 2000)
    },
    function (callback) {
    setTimeout(function(){
    callback(null, 'two')
    }, 5000)
    }
    ], function(err, results){
    console.log(results)
    console.timeEnd('test')
    })

    // 串行有关联,第一个操作结束之后才可以进行下一个
    async.waterfall([
    function (callback) {
    callback(null, 'one', 'two')
    },
    function (arr1, arr2, callback) {
    callback(null, arr1, arr2, 'three')
    },
    function (arr1, arr2, arr3, callback) {
    callback(null, [arr1, arr2, arr3, 'done'])
    }
    ], function(err, results){
    console.log(results)
    })
    npm scripts
    可以修改package.json中的scripts中的
    "build":"node async.js"
    命令行执行npm run build
    使用npm run 可以查看可运行命令

  • 相关阅读:
    7--SpringCloud:Config/Bus周阳老师
    6--SpringCloud:服务网关 gateway周阳老师
    5--SpringCloud:Hystrix 断路器周阳老师
    4--SpringCloud-Ribbon/OpenFeign周阳老师
    3--SpringCloud 和 Zookeeper周阳老师
    seata启动报错的可能原因,以及解决方案
    linux中Mysql的安装
    解决Nginx启动的一些问题
    svg配置与less在vue中使用
    微信小程序day01-基础认识到轮播图组件
  • 原文地址:https://www.cnblogs.com/shenjp/p/6407033.html
Copyright © 2011-2022 走看看