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 可以查看可运行命令
最新文章
- SHLVL 和 BASH_SUBSHELL 两个变量的区别
- 如何设计一个 App 的注册登录流程?
- Java中 final static super this instanceof 关键字用法
- nyoj-71
- LPC43xx SGPIO DMA and Interrupts
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
- 论文笔记之:MatchNet: Unifying Feature and Metric Learning for Patch-Based Matching
- Excel2007给表格设置成只读加密属性 让他人无法修改
- 17.1.2 Replication Formats
- ExtJs 中的ext.date
- Python 第四天
- python中关于文件的读取和写入
- Docker(4):Docker集中化web界面管理平台—Shipyard部署
- Winform 图片预览列表+分页显示
- A1117. Eddington Number
- final 关键字的作用及应用案例
- 转 Apache Kafka:下一代分布式消息系统
- jquery树形表格实现方法
- Knockout 监控数组对象属性
- sqlite 插入数据 too many variables
热门文章
- 那就用pthon来写个跳板机吧
- OSG实现场景漫游(转载)
- DDD设计一个电商网站
- Angular - - ngReadonly、ngSelected、ngDisabled
- 转:找不到include xgpio.h;Unresolved include xgpio.h
- HDU-2031-进制转换
- Cocos2d-x 多分辨率支持
- SysLog简介和java操作实例
- The type or namespace name '****' could not be found
- iOS开发一些小技巧