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(三)--- Node.js模块
May 25 NodeJs
使用forever管理nodejs应用教程
Jun 03 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
Jun 06 NodeJs
深入理解NodeJS 多进程和集群
Oct 17 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
Nodejs实现WebSocket代码实例
May 19 NodeJs
浅谈vue websocket nodeJS 进行实时通信踩到的坑
Sep 22 NodeJs
如何利用nodejs自动定时发送邮件提醒(超实用)
Dec 01 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
解决File size limit exceeded 错误的方法
2013/06/14 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
django如何通过类视图使用装饰器
2019/07/24 Python
Python处理session的方法整理
2019/08/29 Python
django中related_name的用法说明
2020/05/20 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
计算机专业个人求职信范例
2013/09/23 职场文书
行政主管岗位职责
2013/11/18 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
法人代表证明书格式
2014/10/01 职场文书
2015年公司新年寄语
2014/12/08 职场文书
统计员岗位职责
2015/02/11 职场文书
通知的格式范文
2015/04/27 职场文书
大学新生入学感想
2015/08/07 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
python Tkinter模块使用方法详解
2022/04/07 Python
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS