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学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
Nodejs学习item【入门手上】
May 05 NodeJs
NodeJs的优势和适合开发的程序
Aug 14 NodeJs
nodeJs内存泄漏问题详解
Sep 05 NodeJs
NodeJS学习笔记之Module的简介
Mar 24 NodeJs
Nodejs进阶:express+session实现简易登录身份认证
Apr 24 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
nodejs制作小爬虫功能示例
Feb 24 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
开源SNS系统-ThinkSNS
2008/05/18 PHP
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
prototype 1.5 &amp; scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
Prototype使用指南之ajax
2007/01/10 Javascript
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
围观tangram js库
2010/12/28 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
pygame实现五子棋游戏
2019/10/29 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
《美丽的田园》教学反思
2014/03/01 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
火灾现场处置方案
2014/05/28 职场文书
企业文化标语大全
2014/06/10 职场文书
宣传标语大全
2014/07/01 职场文书
离婚财产处理协议书
2014/09/30 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
经营场所使用证明
2015/06/19 职场文书
教育教学工作反思
2016/02/24 职场文书
在python中实现导入一个需要传参的模块
2021/05/12 Python
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏