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 可以查看可运行命令

  • 相关阅读:
    CF 335A(Banana-贪心-priority_queue是大根堆)
    Oracle shutdown immediate无法关闭数据库解决方法
    ORA-02266: unique/primary keys in table referenced by enabled foreign keys
    Linux命令学习总结:date命令
    Linux命令学习总结:pwd命令
    Linux命令学习总结:cd命令
    ORACLE表空间管理维护
    ORACLE 12C新特性——CDB与PDB
    [翻译]当分发数据库增长到25G时如何解决
    The process could not execute 'sp_repldone/sp_replcounters' on 'ServerName'
  • 原文地址:https://www.cnblogs.com/shenjp/p/6407033.html
Copyright © 2011-2022 走看看