JavaScript 任务池
JavaScript 任務(wù)池
線程池
在多線程語言中,我們通常不會(huì)隨意的在需要啟動(dòng)線程的時(shí)候去啟動(dòng),而是會(huì)選擇創(chuàng)建一個(gè)線程池 。所謂線程池 ,本意其實(shí)就是(不止這些作用 ,其余作用可以自行查閱):
- 節(jié)省操作系統(tǒng)資源
- 限制最大線程數(shù)。
對(duì)于 JavaScript 來說,雖然不存在“啟動(dòng)線程”這種問題,但我們還是可以通過類似的思想,來限制我們做異步操作的數(shù)量。
分析
首先我們需要一個(gè)數(shù)組,用它來存儲(chǔ)尚未執(zhí)行的任務(wù) ,每個(gè)任務(wù)都是一個(gè)函數(shù),這個(gè)函數(shù)必須要返回一個(gè) Promise。
type Task = () =>Promise;const tasks: Task[] = []; 其次我們需要一個(gè)方法來進(jìn)行任務(wù)的添加