NPM酷库,每天两分钟了解一个流行的NPM库。今天要理解的库叫做async,它不同于ES7标准的async/await关键字。这里说的async只是npm的一个库。为了区分,今天的主角叫做asynclibrary,async/await的关键字叫做asyncfunction。.在处理异步任务时,为了提高性能,我们往往会批量处理任务。使用Promise.all()可以同时实现多个Promise异步任务:letpromises=tasks.map(async(task)=>{//...});等待Promise.all(承诺);在上面的代码中,tasks是一个待处理任务的数组。通过调用数组map方法,为每个任务执行一个异步的async函数,map方法返回的是一个Promise数组,最后通过Promise.all()执行Promise数组。但是如果tasks数组非常大,可能会给异步任务后端带来巨大的瞬时压力。处理多个异步任务时能指定并行人数吗?async库可以通过async库提供的工具函数轻松完成上述需求:constasync=require('async');async.mapLimit(tasks,5,async(task)=>{//...});上面的代码,我们调用了异步库的mapLimit()方法。该方法的第二个参数是并行处理的任务数,这样无论任务列表多么庞大,我们都可以有条不紊地完成,而不会给后端数据库和其他服务带来一时的过大压力。async库是一个优秀的异步控制库。除了mapLimit()函数外,它还提供了大量其他实用函数。以前没有async/await的时候,async库起到了特别突出的作用。参考资料https://github.com/caolan/async
