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 npm install全局安装和本地安装的区别
Jun 05 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
Nodejs中 npm常用命令详解
Jul 04 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
Nodejs基于LRU算法实现的缓存处理操作示例
Mar 17 NodeJs
nodejs集成sqlite使用示例
Jun 05 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
解析php开发中的中文编码问题
2013/08/08 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
Vue插件之滑动验证码
2019/09/21 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
python 算法 排序实现快速排序
2012/06/05 Python
Python第三方库的安装方法总结
2016/06/06 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
幼师专业毕业生自荐信
2013/09/29 职场文书
数控专业大学生的自我鉴定
2013/11/13 职场文书
中专生求职自荐信范文
2013/12/22 职场文书
应届实习生的自我评价范文
2014/01/05 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
党校学习党性分析材料
2014/12/19 职场文书
论语读书笔记
2015/06/26 职场文书
学生会任命书范本
2015/09/21 职场文书
Oracle笔记
2021/04/05 Oracle