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

  • 相关阅读:
    如何在一个控件上同时实现单触和多触事件
    看看iOS 5.0 beta 6都有哪些变化吧
    转,net实现下载
    转检测到潜在危险
    如何分析已有项目如何能够得到最快最大的提升???
    转Unity 入门
    近段总结
    转,net几个热点问题
    dll动态链接库
    转使用NUnit在.Net编程中进行单元测试
  • 原文地址:https://www.cnblogs.com/zhaodahai/p/6831200.html
Copyright © 2011-2022 走看看