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访问ActiveX对象,以操作Access数据库为例。
Dec 15 NodeJs
跟我学Nodejs(二)--- Node.js事件模块
May 21 NodeJs
nodejs的10个性能优化技巧
Jul 15 NodeJs
nodejs开发微博实例
Mar 25 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
nodejs中实现修改用户路由功能
May 24 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 date函数参数详解
2006/11/27 PHP
thinkphp 多表 事务详解
2013/06/17 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
2019/02/14 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
python中函数默认值使用注意点详解
2016/06/01 Python
浅谈python对象数据的读写权限
2016/09/12 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
python 进程的几种创建方式详解
2019/08/29 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
python 回溯法模板详解
2020/02/26 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
python中四舍五入的正确打开方式
2021/01/18 Python
乐观大学生的自我评价
2014/01/10 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
大班上学期个人总结
2015/02/13 职场文书
赢在执行观后感
2015/06/16 职场文书
2016年情人节问候语
2015/11/11 职场文书
Python中time标准库的使用教程
2022/04/13 Python