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异步编程
Dec 04 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
NodeJs中的VM模块详解
May 06 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
Nodejs 复制文件/文件夹的方法
Aug 24 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 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操作数组相关函数
2011/02/03 PHP
Zend的MVC机制使用分析(一)
2013/05/02 PHP
php多文件上传下载示例分享
2014/02/20 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
jquery ui对话框实例代码
2013/05/10 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
python异常处理和日志处理方式
2019/12/24 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
环保倡议书300字
2014/05/15 职场文书
工商局个人工作总结
2015/03/03 职场文书
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL