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...