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中的VM模块详解
May 06 NodeJs
用NodeJS实现批量查询地理位置的经纬度接口
Aug 16 NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
nodejs中art-template模板语法的引入及冲突解决方案
Nov 07 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 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
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
php方法调用模式与函数调用模式简例
2011/09/20 PHP
PHP版微信公众平台红包API
2015/04/02 PHP
jquery cookie插件代码类
2009/05/26 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
python爬取51job中hr的邮箱
2016/05/14 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
python中类的属性和方法介绍
2018/11/27 Python
Python 获取div标签中的文字实例
2018/12/20 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
美国滑雪板和装备购物网站:Skis.com
2018/12/20 全球购物
大学自我评价
2014/02/12 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
个人委托书格式
2014/04/04 职场文书
在职证明书范本(2014新版)
2014/09/25 职场文书
同学聚会祝酒词
2015/08/10 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
python 爬取华为应用市场评论
2021/05/29 Python
html中两种获取标签内的值的方法
2022/06/16 jQuery