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学习笔记之网络编程
Aug 03 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
简单实现nodejs上传功能
Jan 14 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
深入理解nodejs中Express的中间件
May 19 NodeJs
基于nodejs+express4.X实现文件下载的实例代码
Jul 13 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
Aug 20 NodeJs
node快速搭建后台的实现步骤
Feb 18 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实现图形显示Ip地址的代码及注释
2014/01/20 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
2015/05/22 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
电钳专业个人求职信
2014/01/04 职场文书
优秀部门获奖感言
2014/02/14 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
使用pytorch实现线性回归
2021/04/11 Python
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript