官网: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的更多相关文章

  1. nodejs Async详解之三:集合操作

    Async提供了很多针对集合的函数,可以简化我们对集合进行异步操作时的步骤.如下: forEach:对集合中每个元素进行异步操作 map:对集合中的每个元素通过异步操作得到另一个值,得到新的集合 fi ...

  2. nodejs Async详解之二:工具类

    Async中提供了几个工具类,给我们提供一些小便利: memoize unmemoize log dir noConflict 1. memoize(fn, [hasher]) 有一些方法比较耗时,且 ...

  3. nodejs Async 使用方法(解决多层回调嵌套)

    由于nodejs是异步处理的,有时我们想同步从mysql里取出数据,最后在处理逻辑 就需要用到此扩展: 此扩展可以避免多层回调: 安装方法: npm install async 使用方法: 1.par ...

  4. [NodeJS] async 和 await 的本质

    ​    绝大多数nodejs程序员都会使用 async 和 await 关键字,但是极少有人能真正弄明白 async 和 await 的原理.这篇文章将从零“构建”出 async 和 await 关 ...

  5. nodejs async waterfull 小白向

    async.waterfall([function(callback){var a=3+5;callback(null,a);},function(n,callback) { callback(nul ...

  6. nodejs async series 小白向

    async.series({  flag1:function(done){ //flag1 是一个流程标识,用户自定义      //逻辑处理      done(null,"返回结果&qu ...

  7. hadoop-mongo map/reduce java

    官方 http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-hadoop/ mongo-haoop项目地址 https://g ...

  8. nodejs 回调地狱解决 promise async

    nodejs毁掉地狱是一直被人诟病的,以下总结一下解决毁掉地狱的一些方法.(暂时研究的比较浅) 1.promise promise模式在任何时刻都处于以下三种状态之一:未完成(unfulfilled) ...

  9. (四)、 nodejs中Async详解之一:流程控制

    为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程控制:简化十种 ...

随机推荐

  1. 基于JS的文本验证

    1,不能为空 <input type="text" onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert(' ...

  2. Retrofit2.0+RxJava2.0问题

    问题1:java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 2 path ...

  3. 西南交通大学结构服役安全及力学基础创新团队在Wiley出版英文专著(转载)

    近日,西南交通大学力学与工程学院康国政教授与阚前华副教授受邀由John Wiley & Sons Ltd公司出版了英文专著 “Cyclic plasticity of Engineering  ...

  4. debug、release

    1.区别 Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动.如果我们愿意,我们完全可以把Debug和Release的行为完全颠 ...

  5. Cocos2d-x 3.x 在wp8中调用系统字体的解决方案

    问题和解决方法: 在使用cocos2d-x设计游戏的时候,字体是个很重要的部分.如果游戏中对字体没有太多的要求,就可以使用平台系统自带的字体,可以节省游戏的尺寸,以及减小游戏运行时所占用的内存.当加载 ...

  6. 网络基础相关的知识 socket模块

    1.架构 1.C/S架构:client客户端和server服务器端 优势:能充分发挥pc机的性能 2.B/S架构:browser浏览器和server服务器    隶属于C/S架构 B/S架构  统一了 ...

  7. Redis网络协议

    Redis网络协议较为简单,易于阅读. 命令或数据已\r\n结尾,但除了状态回复,其他数据都是二进制安全的(包含长度) 头部如下: + 正确的状态信息,具体信息是当前行+后面的字符. -  一条错误信 ...

  8. C#数字类型输出字符串时保留指定小数位数的方法

    1.使用占位符: 1)float f = 321.12345F;f.ToString("0.00");这样做无论f是不是整数,都将加上2位小数. 2)float f = 321.1 ...

  9. 【每日更新】【SQL实用大杂烩】

    11.分页1. select * from (select top 2 * from( select top 3 * from t_table order by field1) a order by  ...

  10. git(常用命令)思维导图...

    Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. 来自文章:http://www.cnblogs.com/1-2-3/archive ...