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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
nodejs修复ipa处理过的png图片
Feb 17 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
nodejs aes 加解密实例
Oct 10 NodeJs
NodeJs实现简单的爬虫功能案例分析
Dec 05 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 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数据库配置文件一般做法分享
2012/07/07 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
2014/03/04 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
简单的js计算器实现
2016/10/26 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
Django自定义分页与bootstrap分页结合
2021/02/22 Python
python中defaultdict的用法详解
2017/06/07 Python
Python 闭包的使用方法
2017/09/07 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
thinkphp5 路由分发原理
2021/03/18 PHP
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
计算机网络毕业生自荐信
2013/10/01 职场文书
安全生产大检查方案
2014/05/07 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技