node js 异步运行流程控制模块Async介绍
1.Async介绍
sync是一个流程控制工具包。提供了直接而强大的异步功能。基于Javascript为Node.js设计,同一时候也能够直接在浏览器中使用。
Async提供了大约20个函数,包含经常使用的 map, reduce, filter, forEach 等,异步流程控制模式包含,串行(series),并行(parallel),瀑布(waterfall)等。
项目地址:https://github.com/caolan/async
2. Async安装
npm install async
3. Async函数介绍
基于async的0.2.9版本号。
async主要实现了三个部分的流程控制功能:
- 集合: Collections
- 流程控制: Control Flow
- 工具类: Utils
1). 集合: Collections
- detect: 用于取得集合中满足条件的第一个元素。
- sortBy: 对集合内的元素进行排序。根据每一个元素进行某异步操作后产生的值,从小到大排序。
- some: 当集合中是否有至少一个元素满足条件时,终于callback得到的值为true,否则为false.
- every: 假设集合里每一个元素都满足条件,则传给终于回调的result为true,否则为false
- concat: 将多个异步操作的结果合并为一个数组。
- each: 假设想对同一个集合中的所有元素都运行同一个异步操作。
- map: 对集合中的每一个元素,运行某个异步操作,得到结果。所有的结果将汇总到终于的callback里。与each的差别是,each仅仅关心操作不管最后的值。而map关心的最后产生的值。
- filter: 使用异步操作对集合中的元素进行筛选, 须要注意的是,iterator的callback仅仅有一个參数,仅仅能接收true或false。
- reject: reject跟filter正好相反。当測试为true时则抛弃
- reduce: 能够让我们给定一个初始值,用它与集合中的每一个元素做运算。最后得到一个值。reduce从左向右来遍历元素,假设想从右向左,可使用reduceRight。
2). 流程控制: Control Flow
- doUntil: doUntil与doWhilst正好相反,当test为false时循环。与true时跳出。
其他特性一致。
- forever: 不管条件循环运行。假设不出错,callback永远不被运行。
- waterfall: 按顺序依次运行一组函数。
每一个函数产生的值。都将传给下一个。
- series: 串行运行,一个函数数组中的每一个函数,每一个函数运行完毕之后才干运行下一个函数。
- parallel: 并行运行多个函数。每一个函数都是马上运行,不须要等待其他函数先运行。
传给终于callback的数组中的数据依照tasks中声明的顺序。而不是运行完毕的顺序。
- whilst: 相当于while,但当中的异步调用将在完毕后才会进行下一次循环。
- doWhilst: 相当于do…while, doWhilst交换了fn,test的參数位置,先运行一次循环。再做test推断。
- until: until与whilst正好相反,当test为false时循环,与true时跳出。其他特性一致。
- compose: 创建一个包含一组异步函数的函数集合,每一个函数会消费上一次函数的返回值。把f(),g(),h()异步函数,组合成f(g(h()))的形式。通过callback得到返回值。
- applyEach: 实现给一数组中每一个函数传同样參数,通过callback返回。假设仅仅传第一个參数,将返回一个函数对象,我能够传參调用。
- queue: 是一个串行的消息队列,通过限制了worker数量,不再一次性所有运行。当worker数量不够用时,新增加的任务将会排队等候。直到有新的worker可用。
- iterator: 将一组函数包装成为一个iterator,初次调用此iterator时。会运行定义中的第一个函数并返回第二个函数以供调用。
- apply: 能够让我们给一个函数预绑定多个參数并生成一个可直接调用的新函数,简化代码。
- nextTick: 与nodejs的nextTick一样,再最后调用函数。
- cargo: 一个串行的消息队列,相似于queue。通过限制了worker数量。不再一次性所有运行。不同之处在于。cargo每次会载入满额的任务做为任务单元,仅仅有任务单元中所有运行完毕后,才会载入新的任务单元。
- auto: 用来处理有依赖关系的多个任务的运行。
- times: 异步运行,times能够指定调用几次。并把结果合并到数组中返回
- timesSeries: 与time相似。唯一不同的是同步运行
3). 工具类: Utils
- memoize: 让某一个函数在内存中缓存它的计算结果。对于同样的參数。仅仅计算一次。下次就直接拿到之前算好的结果。
- unmemoize: 让已经被缓存的函数,返回不缓存的函数引用。
- dir: 与log相似,不同之处在于,会调用浏览器的console.dir()函数。显示为DOM视图。
- noConflict: 假设之前已经在全局域中定义了async变量,当导入本async.js时,会先把之前的async变量保存起来,然后覆盖它。仅仅用于浏览器端,在nodejs中没用。这里无法演示。
- log: 运行某异步函数。并记录它的返回值。日志输出。
假设你认为此文章对你实用,给我点动力。请我喝杯奶茶咯
node js 异步运行流程控制模块Async介绍的更多相关文章
- 使用events.EventEmitter 控制Node.js 程序执行流程
使用events.EventEmitter 控制Node.js 程序执行流程 标题写的可能也不太对,大家领会精神: Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. ...
- Node.js异步处理CPU密集型任务
Node.js异步处理CPU密集型任务 Node.js擅长数据密集型实时(data-intensive real-time)交互的应用场景.然而数据密集型实时应用程序并非仅仅有I/O密集型任务,当碰到 ...
- node.js异步编程的几种模式
Node.js异步编程的几种模式 以读取文件为例: 1.callback function const fs = require('fs'); //callback function fs.readF ...
- 深入理解node.js异步编程:基础篇
###[本文是基础内容,大神请绕道,才疏学浅,难免纰漏,请各位轻喷] ##1. 概述 目前开源社区最火热的技术当属Node.js莫属了,作为使用Javascript为主要开发语言的服务器端编程技术和平 ...
- node.js异步编程解决方案之Promise用法
node.js异步编程解决方案之Promise var dbBase = require('../db/db_base'); var school_info_db = require('../db/s ...
- [Node.js与数据库]node-mysql 模块介绍
[Node.js与数据库]node-mysql 模块介绍 转载至:https://itbilu.com/nodejs/npm/NyPG8LhlW.html#multiple-statement-q ...
- [Node.js] Promise,Q及Async
原文地址:http://www.moye.me/2014/12/27/promise_q_async/ 引子 在使用Node/JS编程的时候,经常会遇到这样的问题:有一连串的异步方法,需要按顺序执行, ...
- Node.js 异步异闻录
本文首发在个人博客:http://muyunyun.cn/posts/7b9fdc87/ 提到 Node.js, 我们脑海就会浮现异步.非阻塞.单线程等关键词,进一步我们还会想到 buffer.模块机 ...
- Node.js 异步模式浅析
注:此文是node.js实战读后的总结. 在平常的脚本语言中都是同步进行的,比如php,服务器处理多个请求的方法就是并行这些脚本.多任务处理,多线程等等.但是这种处理方式也有一个问题:每一个进程或者线 ...
随机推荐
- windows创建域共享文件
windows创建域共享文件 windows常见的文件系统: FAT FAT32 NTFS NTFS的特点: 可以对单个文件或文件夹设置权限 支持更大的磁盘容量 支持加密和压缩 活动目录需要NTFS ...
- 【English】20190429
detect发现 [dɪˈtekt] charger充电器 [ˈtʃɑːrdʒər] unable to detect charger
- winform 实现类似于TrackBar的自定义滑动条,功能更全
功能很全,随便列几个 1.可以设置滑块的大小,边框颜色.背景色.形状等等吧 2.可以设置轨道的方向.边框颜色.背景色.阴影等等 ... 效果图: 下载链接https://download.csdn.n ...
- 探索JS引擎工作原理
JavaScript 从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习 JS 引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈.全局对象.执行环境.变量对象.活动对象.作用域和作用 ...
- 史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!
想往高处走,怎么能不懂 Dubbo? Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一.Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉. ...
- 微服务之consul(一)
一.概述 consul是google开源的一个使用go语言开发的服务发现.配置管理中心服务.内置了服务注册与发现框 架.分布一致性协议实现.健康检查.Key/Value存储.多数据中心方案,不再需要依 ...
- OpenCV+TensorFlow实现自定义手写图像识别
完整版请点击链接:https://mp.weixin.qq.com/s/5gHXGmLbtO7m3dOFrDUiHQ 或微信关注“大数据技术宅” 继用TensorFlow教你做手写字识别(准确率 ...
- Redis原理及使用
一:原理介绍 1:什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2:Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcache ...
- C#面试考点集锦
C#面试考点集锦 ©智客坊 岁末年初往往是程序猿准备跳槽的高峰,当然互联网行业跳槽几乎是每个月都在发生,没有太过明显的淡季~那么,如何提高面试的通过率,最终顺利的拿到自己心仪的offer呢? ...
- Eclipse代码快捷键
今天终于找到了代码注释快捷键:ctrl+shift+/取消注释快捷键:ctrl+shift+\ Java文件:注释和取消注释的快捷键都是:CTRL + / 或 Shift+Ctrl+C JS文件:注释 ...