nodejs async异步常用函数总结(推荐)
nodejs框架类库很多,“流程控制”本来是件比较简单的事,但是对于nodejs的异步架构的实现方法,对于需要同步的业务逻辑,实现起来比较麻烦。
async的集合控制:
async.map(arr, function(item, callback){},callback(err, results){});async.mapSeries
app.get('/testMap',function(req, res){ var arr = [0,1,2,3,4,5,6]; async.mapSeries(arr,function(item, callback){ (function(){ callback(null, item+1); }()); },function(err, results){ console.log(results);//[1,2,3,4,5,6,7]; }); });
results.length与arr.length值相等;
对数组arr中的每个item,执行某个异步函数function,得到结果。所有的结果将汇总到最终的callback里;
async的流程控制:
async.series(tasks,callback);多个函数依次执行,之间没有数据交换
app.get('/testSeries',function(req, res){ async.series([ function(callback){ callback(null,'function1'); },function(callback){ callback(null, 'function2') },function(callback){ callback(null, 'function3'); }],function(err, results){ console.log(results);//['function1','function2','function3']; }); });
tasks: functionList; callback: function(err, result){}
串行执行,一个函数数组中的每个函数执行完成之后,才执行下一个函数,callback(err,results);err返回错误信息,results为多个函数的返回的结果集;
如果任何一个函数向它的回调函数中传了一个error,则后面的函数都不会被执行,并且将会立刻会将该error以及已经执行了的函数的结果,传给series中最后那个callback
async.parallel(tasks,callback);多个函数并行执行;
app.get('/testParallel',function(req, res){ async.parallel([ function(callback){ callback(null,'function1'); },function(callback){ callback(null, 'function2') },function(callback){ callback(null, 'function3'); }],function(err, results){ console.log(results);//['function1','function2','function3']; }); });
tasks: functionList;
callback:function(err, results){}
tasks.length与results.length值相等
并行执行多个函数,每个函数都是立即执行,不需要等待其它函数先执行.传给最终callback数组中的数据按照tasks中声明的顺序,而不是执行完成的顺序;
如果某个函数出错,则立刻将err和已经执行完的函数的结果值传给parallel最终的callback。其它未执行完的函数的值不会传到最终数据,但要占个位置
async.whilst(test,function,callback);可用于异步调用while
app.get('/testWhilst',function(req, res){ var count = 0; async.whilst(function(){ if(count < 3) return true; },function(callback){ (function(){ count++; callback(null); }()); },function(err){ console.log(count);//3 }); });
总结
以上所述是小编给大家介绍的nodejs async异步常用函数总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
- 【蛙蛙推荐】windbg使用小总结
- Mahout推荐开发总结
- Android笔记:触摸事件的分析与总结----多点触控 推荐
- 关于Java中的IO流总结(推荐)
- 如何连接oracle数据库及故障解决办法-总结 极力推荐
- 阿里天池大数据之移动推荐算法大赛总结及代码全公布
- 【推荐】有趣儿的PHP文件操作常用函数总结
- 推荐系统算法总结
- JTree用法及JTree使用经验总结(吐血推荐)
- Ajax解决缓存的5种方法总结(推荐)
- esxi4.1知识总结之三:安全 推荐
- 总结之:CentOS6.5 DNS服务BIND配置、正反向解析、主从及压力测试(3) 推荐
- 附录A 进阶游戏编程书籍总结与推荐
- 如何连接oracle数据库及故障解决办法-总结 极力推荐 转贴
- 【推荐】程序员要学会思考,总结
- 【移动开发】Android中WIFI开发总结(一) 推荐
- 通过java反射机制动态调用某方法的总结(推荐)
- 【总结】推荐算法之工具包
- IIS6.0+Tomcat7.0整合总结(推荐)
- Personal Reading Assignment 2 -读推荐文章有感以及项目开发目前总结