异步编程是指由于异步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 可以查看可运行命令

最新文章

  1. SHLVL 和 BASH_SUBSHELL 两个变量的区别
  2. 如何设计一个 App 的注册登录流程?
  3. Java中 final static super this instanceof 关键字用法
  4. nyoj-71
  5. LPC43xx SGPIO DMA and Interrupts
  6. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
  7. 论文笔记之:MatchNet: Unifying Feature and Metric Learning for Patch-Based Matching
  8. Excel2007给表格设置成只读加密属性 让他人无法修改
  9. 17.1.2 Replication Formats
  10. ExtJs 中的ext.date
  11. Python 第四天
  12. python中关于文件的读取和写入
  13. Docker(4):Docker集中化web界面管理平台—Shipyard部署
  14. Winform 图片预览列表+分页显示
  15. A1117. Eddington Number
  16. final 关键字的作用及应用案例
  17. 转 Apache Kafka:下一代分布式消息系统
  18. jquery树形表格实现方法
  19. Knockout 监控数组对象属性
  20. sqlite 插入数据 too many variables

热门文章

  1. 那就用pthon来写个跳板机吧
  2. OSG实现场景漫游(转载)
  3. DDD设计一个电商网站
  4. Angular - - ngReadonly、ngSelected、ngDisabled
  5. 转:找不到include xgpio.h;Unresolved include xgpio.h
  6. HDU-2031-进制转换
  7. Cocos2d-x 多分辨率支持
  8. SysLog简介和java操作实例
  9. The type or namespace name '****' could not be found
  10. iOS开发一些小技巧