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的require模块(文件模块/核心模块)及路径介绍
Jan 14 NodeJs
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
nodejs分页类代码分享
Jun 17 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 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动态生成javascript文件的2个例子
2014/04/11 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
Javascript 中介者模式实例
2009/12/16 Javascript
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
jQuery为动态生成的select元素添加事件的方法
2016/08/29 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
angular动态表单制作
2018/02/23 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
python使用pil生成图片验证码的方法
2015/05/08 Python
Python使用Supervisor来管理进程的方法
2015/05/28 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
重阳节登山活动方案
2014/02/03 职场文书
设计顾问服务计划书
2014/05/04 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
职工食堂管理制度
2015/08/06 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
解决pytorch-gpu 安装失败的记录
2021/05/24 Python