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库的作用尤其凸起。