NPM酷庫 async 強大的非同步任務控制

2021-09-14 03:20:36 字數 915 閱讀 2545

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庫提供的工具函式可以輕鬆完成上述要求:

const async = require('async');

async.maplimit(tasks, 5, async(task) => );

上述**中,我們呼叫了 async 庫的maplimit()方法,該方法的第二個引數就是要並行處理的任務數量,這樣無論任務列表多麼巨大,我們都可以有序完成,不會給後端資料庫等服務帶來瞬間的過大壓力。

async庫是乙個非常出色的非同步控制庫,除了maplimit()函式外,還提供了大量的其他工具函式,在當年沒有async/await的時候,async庫的作用尤為突出。

NPM酷庫 pify 將非同步函式Promise化

npm酷庫,每天兩分鐘,了解乙個流行npm庫。所有node.js標準庫和很多第三方庫提供的介面都是callback樣式的,在es7標準時代,使用async await配合promise才是最佳實踐。昨天我們了解到可以用bluebird庫將callback樣式庫轉化為promise樣式,同時blueb...

NPM酷庫 chalk,多彩的粉筆

npm酷庫,每天兩分鐘,了解乙個流行npm庫。echo e e 34 4mmcc e 0m 將在終端中輸出藍色帶下劃線的mcc。雖然我們已經學會了,在終端中控制字元顏色的原理和方法,但是這種操作太過於繁瑣,每一次都需要查顏色樣式手冊,然後寫出一堆無法閱讀的火星文,抓狂!今天介紹的npm庫chalk就...

NPM酷庫 ip,IP位址處理

npm酷庫,每天兩分鐘,了解乙個流行npm庫。const ip require ip 獲取本機網絡卡ip ip.address 比較兩個ip是否相同 ip.isequal 1 0 1 true ip 表示格式互轉 ip.tobuffer 127.0.0.1 buffer 127,0,0,1 ip.t...