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中SSL服务的性能
Jul 15 NodeJs
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
NodeJS学习笔记之网络编程
Aug 03 NodeJs
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
基于nodejs实现微信支付功能
Dec 20 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
Aug 20 NodeJs
如何利用nodejs自动定时发送邮件提醒(超实用)
Dec 01 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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/10/21 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
Python实现屏幕截图的两种方式
2018/02/05 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
Django中的静态文件管理过程解析
2019/08/01 Python
Python requests模块session代码实例
2020/04/14 Python
Python代码执行时间测量模块timeit用法解析
2020/07/01 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
日语专业毕业生自荐书
2014/06/18 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
秋菊打官司观后感
2015/06/03 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书