nodejs async
官网:https://github.com/caolan/async
流程控制:简化十种常见流程的处理
集合处理:如何使用异步操作处理集合中的数据
工具类:几个常用的工具类
流程控制
详细说明:http://my.oschina.net/huangsz/blog/176203
series(tasks, [callback]) 多个函数依次执行,之间没有数据交换,仅仅需要保证执行顺序
parallel(tasks, [callback]) (多个函数并行执行)
waterfall(tasks, [callback]) (多个函数依次执行,且前一个的输出为后一个的输入)
最后一个函数是,如果之前的函数出错的话,才会执行。如果函数数据最后一个函数,执行cb(),则也会执行最后一个函数。
async.waterfall([
function(cb){
console.log('1 brefore');
cb(null, 1);
console.log('1 after');
},
function(result){
console.log('2:'+result);
}
], function(err, value){
console.log('err:'+err);
console.log('value:'+value);
})
输出结果是:1 brefore;1 after;2:1;
说明cb()执行完后,还会执行下面的语句;cb跟return不同。
cb(argu1, argu2):可以传多个参数
auto(tasks, [callback]) (多个函数有依赖关系,有的并行执行,有的依次执行)
whilst(test, fn, callback)(用可于异步调用的while)
until(test, fn, callback) (与while相似,但判断条件相反)
queue (可设定worker数量的队列)
iterator(tasks) (将几个函数包装为iterator)
apply(function, arguments..) (给函数预绑定参数)
nextTick(callback) (在nodejs与浏览器两边行为一致)
each是全部执行并等待全部完成后返回,中间如果有错误就不等全部完成就立即返回。
nodejs async的更多相关文章
- nodejs Async详解之三:集合操作
Async提供了很多针对集合的函数,可以简化我们对集合进行异步操作时的步骤.如下: forEach:对集合中每个元素进行异步操作 map:对集合中的每个元素通过异步操作得到另一个值,得到新的集合 fi ...
- nodejs Async详解之二:工具类
Async中提供了几个工具类,给我们提供一些小便利: memoize unmemoize log dir noConflict 1. memoize(fn, [hasher]) 有一些方法比较耗时,且 ...
- nodejs Async 使用方法(解决多层回调嵌套)
由于nodejs是异步处理的,有时我们想同步从mysql里取出数据,最后在处理逻辑 就需要用到此扩展: 此扩展可以避免多层回调: 安装方法: npm install async 使用方法: 1.par ...
- [NodeJS] async 和 await 的本质
绝大多数nodejs程序员都会使用 async 和 await 关键字,但是极少有人能真正弄明白 async 和 await 的原理.这篇文章将从零“构建”出 async 和 await 关 ...
- nodejs async waterfull 小白向
async.waterfall([function(callback){var a=3+5;callback(null,a);},function(n,callback) { callback(nul ...
- nodejs async series 小白向
async.series({ flag1:function(done){ //flag1 是一个流程标识,用户自定义 //逻辑处理 done(null,"返回结果&qu ...
- hadoop-mongo map/reduce java
官方 http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-hadoop/ mongo-haoop项目地址 https://g ...
- nodejs 回调地狱解决 promise async
nodejs毁掉地狱是一直被人诟病的,以下总结一下解决毁掉地狱的一些方法.(暂时研究的比较浅) 1.promise promise模式在任何时刻都处于以下三种状态之一:未完成(unfulfilled) ...
- (四)、 nodejs中Async详解之一:流程控制
为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程控制:简化十种 ...
随机推荐
- [故障引起的故事]URL中带加号的处理
问题起因: 客户订购了一关键字为"e+h 变送器" , 在首页推荐广告中,会根据用户在search 搜索过的关键字进行一个匹配投放.技术实现是UED 通过JS 获取coo ...
- python集合的交,差,并,补集合运算汇总
集合操作实际用的不多,了解即可. 交集: ( & 或者 intersection ) 并集: ( | 或者 union ) 差集: ( - 或者 differe ...
- 群晖Nas中搭建Intellij Idea的LicenseServer服务
下载IntelliJIDEALicenseServer(直接找度娘) 准备 shellX 或其他 ssh工具,个人比较喜欢 mobaxterm. 通过 ssh工具连接到群晖中,用户名和密码就是登陆群晖 ...
- shell中交互输入自动化
shell中交互输入自动化 shell中有时我们需要交互,但是呢我们又不想每次从stdin输入,想让其自动化,这时我们就要使shell交互输入自动化了.这个功能很有用的哟.好好学习. 1 利用重 ...
- Electron Browser加载iframe(webview src属性)
browser或者webcontents 的高度与宽度比例对webview中src的页面结构也是有一定影响的
- 基于mysql全文索引的深入理解
最近要使用mysql的全文索引,一直没能成功,一个是只有MyISAM引擎支持,创建表时需要指定,而是需要对my.ini进行配置. 前言:本文简单讲述全文索引的应用实例,MYSQL演示版本5.5.24. ...
- java.lang.IllegalArgumentException: Service not registered
java.lang.IllegalArgumentException: Service not registered 首先检查一下,Service是否在AndroidManifest文件中注册.格式如 ...
- Maven项目的拆分与聚合
---------------------siwuxie095 Maven 项目的拆分与聚合 1.对已有的 Ma ...
- 转)MySQL日期与时间函数
-- MySQL日期时间处理函数 -- 当前日期:2017-05-12(突然发现今天512,是不是会拉防空警报) SELECT NOW() FROM DUAL;-- 当前日期时间:2017-05-12 ...
- 3.滑雪-深搜&dp
//Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底滑 ...