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服务器(10):处理POST请求
Dec 18 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
Nodejs初级阶段之express
Nov 23 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 NodeJs
NodeJs中express框架的send()方法简介
Jun 20 NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
nodejs的安装使用与npm的介绍
Sep 11 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 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
很实用的一个完整email发送程序
2006/10/09 PHP
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
实习期自我鉴定
2013/10/11 职场文书
电子专业推荐信范文
2013/11/18 职场文书
给老师的感谢信
2015/01/20 职场文书
美术教师求职信范文
2015/03/20 职场文书
2016公司年会主持词
2015/07/01 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android