摘要:酷庫(kù),每天兩分鐘,了解一個(gè)流行庫(kù)。庫(kù)是一個(gè)非常出色的異步控制庫(kù),除了函數(shù)外,還提供了大量的其他工具函數(shù),在當(dāng)年沒有的時(shí)候,庫(kù)的作用尤為突出。
NPM酷庫(kù),每天兩分鐘,了解一個(gè)流行NPM庫(kù)。
今天要了解的庫(kù)叫async,與ES7標(biāo)準(zhǔn)的async/await關(guān)鍵字不同,這里說的async只是NPM的一個(gè)庫(kù),為了區(qū)別,下文中今天的主角叫async庫(kù),async/await的關(guān)鍵字叫async函數(shù)。
在處理異步任務(wù)時(shí),為了加大性能表現(xiàn),我們常常會(huì)批量處理任務(wù),使用Promise.all()可以實(shí)現(xiàn)同時(shí)執(zhí)行多個(gè)Promise異步任務(wù):
let promises = tasks.map(async(task) => { // ... }); await Promise.all(promises);
上述代碼中,tasks 是一個(gè)要處理的任務(wù)數(shù)組,通過調(diào)用數(shù)組map方法,分別為每個(gè)任務(wù)執(zhí)行一個(gè)異步的async函數(shù),map方法返回的是一個(gè)Promise數(shù)組,最后由Promise.all() 執(zhí)行Promise數(shù)組。
但是如果tasks數(shù)組非常大,可能給異步任務(wù)的后端帶來瞬間的巨大壓力,能不能在處理多個(gè)異步任務(wù)時(shí),指定并行的人數(shù)數(shù)量呢?
async庫(kù)通過async庫(kù)提供的工具函數(shù)可以輕松完成上述要求:
const async = require("async"); async.mapLimit(tasks, 5, async(task) => { // ... });
上述代碼中,我們調(diào)用了 async 庫(kù)的 mapLimit() 方法,該方法的第二個(gè)參數(shù)就是要并行處理的任務(wù)數(shù)量,這樣無論任務(wù)列表多么巨大,我們都可以有序完成,不會(huì)給后端數(shù)據(jù)庫(kù)等服務(wù)帶來瞬間的過大壓力。
async庫(kù)是一個(gè)非常出色的異步控制庫(kù),除了mapLimit() 函數(shù)外,還提供了大量的其他工具函數(shù),在當(dāng)年沒有async/await的時(shí)候,async庫(kù)的作用尤為突出。
參考資料https://github.com/caolan/async
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/107105.html
摘要:是一個(gè)劃時(shí)代的庫(kù),因?yàn)楫a(chǎn)生后,后續(xù)的標(biāo)準(zhǔn)的就是基于的,而機(jī)制讓人能夠以同步樣式的代碼處理異步任務(wù),徹底解決了回調(diào)問題。而的機(jī)制其實(shí)很簡(jiǎn)單,它將異步任務(wù)抽象為三種狀態(tài)進(jìn)行中完成失敗。 NPM酷庫(kù),每天兩分鐘,了解一個(gè)流行NPM庫(kù)。 JavaScript的優(yōu)勢(shì)就在于其基于異步事件模型,從而Node.js能夠擁有非常強(qiáng)大的性能表現(xiàn)。但是,JavaScript的callback方式做異步處理,...
摘要:酷庫(kù),每天兩分鐘,了解一個(gè)流行庫(kù)。昨天我們了解到可以用庫(kù)將樣式庫(kù)轉(zhuǎn)化為樣式,同時(shí)庫(kù)也提供了強(qiáng)大在增強(qiáng)版的,如果我們需要轉(zhuǎn)化函數(shù),且僅需要使用標(biāo)準(zhǔn)的,那么使用有些大材小用。 NPM酷庫(kù),每天兩分鐘,了解一個(gè)流行NPM庫(kù)。 所有Node.js標(biāo)準(zhǔn)庫(kù)和很多第三方庫(kù)提供的接口都是callback樣式的,在ES7標(biāo)準(zhǔn)時(shí)代,使用async/await配合Promise才是最佳實(shí)踐。 昨天我們了解到...
摘要:酷庫(kù),每天兩分鐘,了解一個(gè)流行庫(kù)。是一個(gè)實(shí)現(xiàn)庫(kù),并且相對(duì)于標(biāo)準(zhǔn),提供了很多實(shí)用的工具函數(shù)。異步處理超時(shí)設(shè)置延時(shí)執(zhí)行其他關(guān)于返回值的工具函數(shù)比如的作用是獲取返回對(duì)象的某個(gè)屬性,作用等同于這種函數(shù)有很多,具體可以查看文檔。 NPM酷庫(kù),每天兩分鐘,了解一個(gè)流行NPM庫(kù)。 昨天我們了解了如何使用Promise管理異步任務(wù),但是ES2015標(biāo)準(zhǔn)的Promise對(duì)象實(shí)現(xiàn)的接口非常有限,只包含 P...
摘要:酷庫(kù),每天兩分鐘,了解一個(gè)流行庫(kù)。經(jīng)常,我們的程序需要對(duì)磁盤文件進(jìn)行管理,就需要讀取磁盤上的文件列表,然后可能會(huì)需要判斷文件夾或文件名,還可能需要遞歸掃描子目錄。今天我們要了解的庫(kù),就是專門用來掃描磁盤文件,并返回我們需要的文件類型。 NPM酷庫(kù),每天兩分鐘,了解一個(gè)流行NPM庫(kù)。 經(jīng)常,我們的程序需要對(duì)磁盤文件進(jìn)行管理,就需要讀取磁盤上的文件列表,然后可能會(huì)需要判斷文件夾或文件名,還...
摘要:昨天,我們認(rèn)識(shí)了庫(kù)的用法,用來控制輸出調(diào)試日志。今天我們?cè)倭私庖粋€(gè)日志記錄的庫(kù),一個(gè)多路傳輸?shù)娜罩居涗泿?kù)。所謂多路傳輸,是指,你可以自定義多個(gè)日志儲(chǔ)存驅(qū)動(dòng),比如,將日志輸出到終端的同時(shí),將重要日志記錄到文件中,甚至寫到數(shù)據(jù)庫(kù)中。 NPM酷庫(kù),每天兩分鐘,了解一個(gè)流行NPM庫(kù)。 昨天,我們認(rèn)識(shí)了debug庫(kù)的用法,用來控制輸出調(diào)試日志。但是,debug的特性適合于開發(fā)調(diào)試,并不適合程序記...
閱讀 4276·2021-10-13 09:39
閱讀 481·2021-09-06 15:02
閱讀 3229·2019-08-30 15:53
閱讀 1039·2019-08-30 13:04
閱讀 2028·2019-08-30 11:27
閱讀 2009·2019-08-26 13:51
閱讀 2092·2019-08-26 11:33
閱讀 2901·2019-08-26 10:36