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 06 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
轻松创建nodejs服务器(4):路由
Dec 18 NodeJs
nodejs导出excel的方法
Jun 30 NodeJs
nodejs创建web服务器之hello world程序
Aug 20 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
简单好用的nodejs 爬虫框架分享
Mar 26 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
nodejs中实现修改用户路由功能
May 24 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
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
2009/10/31 PHP
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
php获取操作系统语言代码
2013/11/04 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
vue项目实战总结篇
2018/02/11 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
python基于socket实现网络广播的方法
2015/04/29 Python
Python可变参数函数用法实例
2015/07/07 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
python同步两个文件夹下的内容
2019/08/29 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
Java语言程序设计测试题改错题部分
2014/07/22 面试题
自我评价200字分享
2013/12/17 职场文书
个人职业生涯规划书1500字
2013/12/31 职场文书
暑假学习心得体会
2014/09/02 职场文书
教师群众路线心得体会
2014/11/04 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
党员个人总结范文
2015/02/14 职场文书
感动中国何玥观后感
2015/06/02 职场文书