博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NPM酷库:async 强大的异步任务控制
阅读量:6574 次
发布时间:2019-06-24

本文共 756 字,大约阅读时间需要 2 分钟。

NPM酷库,每天两分钟,了解一个流行NPM库。

今天要了解的库叫async,与ES7标准的async/await关键字不同,这里说的async只是NPM的一个库,为了区别,下文中今天的主角叫async库,async/await的关键字叫async函数。

在处理异步任务时,为了加大性能表现,我们常常会批量处理任务,使用Promise.all()可以实现同时执行多个Promise异步任务:

let promises = tasks.map(async(task) => {  // ...});await Promise.all(promises);

上述代码中,tasks 是一个要处理的任务数组,通过调用数组map方法,分别为每个任务执行一个异步的async函数,map方法返回的是一个Promise数组,最后由Promise.all() 执行Promise数组。

但是如果tasks数组非常大,可能给异步任务的后端带来瞬间的巨大压力,能不能在处理多个异步任务时,指定并行的人数数量呢?

async库

通过async库提供的工具函数可以轻松完成上述要求:

const async = require('async');async.mapLimit(tasks, 5, async(task) => {  // ...});

上述代码中,我们调用了 async 库的 mapLimit() 方法,该方法的第二个参数就是要并行处理的任务数量,这样无论任务列表多么巨大,我们都可以有序完成,不会给后端数据库等服务带来瞬间的过大压力。

async库是一个非常出色的异步控制库,除了mapLimit() 函数外,还提供了大量的其他工具函数,在当年没有async/await的时候,async库的作用尤为突出。

参考资料

转载地址:http://dkmjo.baihongyu.com/

你可能感兴趣的文章
正则查找文章内容关键字
查看>>
JS绘制拓扑图示例 (JTopo)
查看>>
世界最大电子展明年将移植到深圳
查看>>
iOS图片浏览器 - XLPhotoBrowser(类似微信多图片浏览效果)
查看>>
pymysql 单独获取表的栏位名称
查看>>
安卓srcCompat弄死我了
查看>>
实验四 递归下降语法分析程序设计
查看>>
虚幻4Matinee功能 基本概念及简单演示样例(Sequence编辑器)
查看>>
随机函数及随机公式推理过程
查看>>
Cookie的使用
查看>>
SQL的操作方法
查看>>
jsp简易登录和注册及JDBC连接Oracle
查看>>
新的三种EBS类型解析
查看>>
系统架构
查看>>
JVM内存结构、垃圾回收那点事(转)
查看>>
面向对象之两大要领 (转)
查看>>
<C Primer Plus >1 Constants and the C Preprocessor
查看>>
MPI-Hydra Process Managerment Framework
查看>>
Django学习【第18篇】:Django之缓存
查看>>
Python学习【第14篇】:面向对象之反射以及内置方法
查看>>