nodejs async异步常用函数总结(推荐)

nodejs框架类库很多,“流程控制”本来是件比较简单的事,但是对于nodejs的异步架构的实现方法,对于需要同步的业务逻辑,实现起来比较麻烦。

async的集合控制:

async.map(arr, function(item, callback){},callback(err, results){});async.mapSeries

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);多个函数依次执行,之间没有数据交换

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);多个函数并行执行;

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异步常用函数总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • node模块机制与异步处理详解

    1.模块机制 commonJS模块机制出现的目的是为了构建js在web服务器,桌面程序,浏览器等方面形成生态系统.而node js就是这种规范的一种实现,用requird来引入其他文件,同样,npm也遵循了commonJS定义的包规范,从而形成了一套完整的生态系统. 模块定义并导出 例如有如下一个名为circle.js的文件 exports.getName = function(name) { return name } 模块载入 var circle = require('/circle.js

  • 浅谈node.js中async异步编程

    1.什么是异步编程? 异步编程是指由于异步I/O等因素,无法同步获得执行结果时, 在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数.ajax请求等等. 示例: for (var i = 1; i <= 3; i++) { setTimeout(function(){ console.log(i); }, 0); }; 这里大部分人会认为输出123,或者333.其实它会输出 444 这里就是我们要说的异步编程了. 高级函数的定义 这里为什么会说到高级函数,因为高级函数是异

  • 在 Node.js 中使用 async 函数的方法

    借助于新版 V8 引擎,Node.js 从 7.6 开始支持 async 函数特性.今年 10 月 31 日,Node.js 8 也开始成为新的长期支持版本,因此你完全可以放心大胆地在你的代码中使用 async 函数了.在这边文章里,我会简要地介绍一下什么是 async 函数,以及它会如何改变我们编写 Node.js 应用的方式. 1 什么是 async 函数 利用 async 函数,你可以把基于 Promise 的异步代码写得就像同步代码一样.一旦你使用 async 关键字来定义了一个函数,那

  • 深入学习nodejs中的async模块的使用方法

    最近在学习nodejs,这两天学习了async模块这个地方知识点挺多的,所以,今天添加一点小笔记. async模块是为了解决嵌套金字塔,和异步流程控制而生.常用的方法介绍 npm 安装好async模块,然后引入就可以使用 var async = require('async'); 1. series(tasks,[callback]) 多个函数从上到下依次执行,相互之间没有数据交互 var task1 =function(callback){ console.log("task1");

  • async/await与promise(nodejs中的异步操作问题)

    举例写文章详情页面的时候的一个场景:首先更改文章详情中的 PV,然后读取文章详情,然后根据文章详情中文章 Id 查阅该文章评论和该文章作者信息.获取全部数据之后渲染文章详情页.数据库操作都是异步的,最直接想到的办法就是一层一层的回调函数,问题出来了:十分不雅观,要是层再多一点还会有更多麻烦.怎么解决?业内为了处理异步操作问题也是拼了,什么async,q,bluebird,co,处理方式不同,各有千秋,感兴趣可以了解一下,但是惊喜的发现nodejs 7.6已经默认支持ES7中的 async/awa

  • 浅析node Async异步处理模块用例分析及常用方法介绍

    最近在研究nodejs,令我感受比较深的是--熟悉js代码的地球人都知道,js的加载顺序很重要!很重要!!那么问题来了,在编写node的时候,会在后台去请求很多接口(我们公司是与java后台交接数据的),接口就会有个回调,这么多回调怎么办呢--每个回调回来的加载顺序怎么去处理是个问题--总不可能去嵌套--嵌套--这样吧,那会显的多麻烦!!这么大的一个问题怎么没有处理方法呢,那是不可能的--对吧! Async异步处理模块! 以下是小sam的理解: 安装很简单,就跟普通的安装模块一样就行了 这样就安

  • nodejs async异步常用函数总结(推荐)

    nodejs框架类库很多,"流程控制"本来是件比较简单的事,但是对于nodejs的异步架构的实现方法,对于需要同步的业务逻辑,实现起来比较麻烦. async的集合控制: async.map(arr, function(item, callback){},callback(err, results){});async.mapSeries app.get('/testMap',function(req, res){ var arr = [0,1,2,3,4,5,6]; async.mapS

  • 推荐ASP中VBScript常用函数

    /*-------------------ASP文档参考集-----------------------*/ *-->作者:草履虫 *-->时间:2007-4.28---2007-4.30(原来是自己编写的手册,现在发在这里) *-->联系:caolvchong@gmail.com *-->文档功能: 1.复习了ASP,加深了对ASP结构的理解和ASP的体会 2.可以用来做ASP参考,自己写的,参考起来更方便 这是第五部分:ASP中VBScript常用函数 /*----------

  • 关于java中@Async异步调用详细解析附代码

    目录 前言 1. @Async讲解 2. 用法 2.1 同步调用 2.2 异步调用 3. 自定义线程池 前言 异步调用与同步调用 同步调用:顺序执行,通过调用返回结果再次执行下一个调用 异步调用:通过调用,无需等待返回结果,执行下一个调用 1. @Async讲解 其@Async的注解代码如下: @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public

  • Python asyncio常用函数使用详解

    目录 协程的定义 协程的运行 多个协程运行 关于loop.close() 回调 事件循环 协程的定义 需要使用 async def 语句 协程可以做哪些事: 1.等待一个future结果 2.等待另一个协程(产生一个结果或引发一个异常) 3.产生一个结果给正在等它的协程 4.引发一个异常给正在等它的协程 协程的运行 调用协程函数,协程不会开始运行,只是返回一个协程对象 要让协程对象运行有两种方式: 1.在另一个已经运行的协程中用await等待它 2.通过ensure_future函数计划它的执行

  • Python Asyncio库之asyncio.task常用函数详解

    目录 前记 0.基础 1.休眠--asyncio.sleep 2.屏蔽取消--asyncio.shield 3.超时--asyncio.wait_for 4.简单的等待--wait 5.迭代可等待对象的完成--asyncio.as_completed 前记 Asyncio在经过一段时间的发展以及获取Curio等第三方库的经验来提供更多的功能,目前高级功能也基本完善,但是相对于其他语言,Python的Asyncio高级功能还是不够的,但好在Asyncio的低级API也比较完善,开发者可以通过参考A

  • linux下socket编程常用头文件(推荐)

    sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函数 netdb.h:提供设置及获取域名的函数 sys/ioctl.h:提供对I/O控制的函数 sys/poll.h:提供socket等待测试机制的函数 其他在网络程序中常见的头文件 unistd.h:提供通用的文件.目录.程序及进程操作的函数 errno.h:提供错误号errno的定义,用于错误处理

  • 基于Java中Math类的常用函数总结

    Java中比较常用的几个数学公式的总结: //取整,返回小于目标函数的最大整数,如下将会返回-2 Math.floor(-1.8): //取整,返回发育目标数的最小整数 Math.ceil() //四舍五入取整 Math.round() //计算平方根 Math.sqrt() //计算立方根 Math.cbrt() //返回欧拉数e的n次幂 Math.exp(3); //计算乘方,下面是计算3的2次方 Math.pow(3,2); //计算自然对数 Math.log(); //计算绝对值 Mat

  • ThinkPHP中Common/common.php文件常用函数功能分析

    本文实例分析了ThinkPHP/Common/common.php文件常用函数功能.分享给大家供大家参考,具体如下: /** * 获取和设置配置参数 支持批量定义 * @param string|array $name 配置变量 * @param mixed $value 配置值 * @return mixed */ function C($name=null, $value=null) { static $_config = array(); // 无参数时获取所有 if (empty($na

  • JavaScript中一些常用的正则表达式(推荐)

    正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. var validateRegExp = { decmal: "^([+-]?)\\d*\\.\\d+$", // 浮点数 decmal1: "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$", // 正浮点数 decmal2: "^-([1-9]\\d*.\\d*|

随机推荐