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 相关文章推荐
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 NodeJs
解析NodeJs的调试方法
Dec 11 NodeJs
nodejs基础应用
Feb 03 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
初识NodeJS服务端开发入门(Express+MySQL)
Apr 07 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
Feb 06 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安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
PHP加密解密类实例分析
2015/04/20 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
简单的js分页脚本
2009/05/21 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
python实现文本去重且不打乱原本顺序
2016/01/26 Python
Python File readlines() 使用方法
2018/03/19 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
使用python模拟命令行终端的示例
2019/08/13 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
如何使用python传入不确定个数参数
2020/02/18 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
学习python需要有编程基础吗
2020/06/02 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
社区优秀志愿者材料
2014/02/02 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
学生退学证明
2015/06/23 职场文书
《实心球》教学反思
2016/02/23 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书