nodejs async异步常用函数总结(推荐)


Posted in NodeJs onNovember 17, 2017

nodejs框架类库很多,“流程控制”本来是件比较简单的事,但是对于nodejs的异步架构的实现方法,对于需要同步的业务逻辑,实现起来比较麻烦。

async的集合控制:

async.map(arr, function(item, callback){},callback(err, results){});async.mapSeries

nodejs async异步常用函数总结(推荐)

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);多个函数依次执行,之间没有数据交换

nodejs async异步常用函数总结(推荐)

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);多个函数并行执行;

nodejs async异步常用函数总结(推荐)

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异步常用函数总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

NodeJs 相关文章推荐
Nodejs从有门道无门菜鸟起飞必看教程
Jul 20 NodeJs
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
Nov 21 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
基于nodejs实现微信支付功能
Dec 20 NodeJs
nodejs中Express与Koa2对比分析
Feb 06 NodeJs
nodejs 如何手动实现服务器
Aug 20 NodeJs
在nodejs中创建child process的方法
Jan 26 NodeJs
详解nodejs内置模块
May 06 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 #NodeJs
nodejs判断文件、文件夹是否存在及删除的方法
Nov 10 #NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 #NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 #NodeJs
nodejs中art-template模板语法的引入及冲突解决方案
Nov 07 #NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 #NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 #NodeJs
You might like
谈谈PHP语法(3)
2006/10/09 PHP
社区(php&amp;&amp;mysql)四
2006/10/09 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
js查找父节点的简单方法
2008/06/28 Javascript
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
vue 根据选择的月份动态展示日期对应的星期几
2021/02/06 Vue.js
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
python实现宿舍管理系统
2019/11/22 Python
柏林通行证:Berlin Pass
2018/04/11 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
失业者真诚求职信范文
2013/12/25 职场文书
致裁判员加油稿
2014/02/08 职场文书
新员工试用期自我评价
2015/03/10 职场文书
2015年工会工作总结
2015/03/30 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
客户答谢会致辞
2015/07/30 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
关于的python五子棋的算法
2022/05/02 Python