promise-parallel-throttle
同時に実行できるPromiseの数を抑えたもの
promiseCallbacksにPromiseを生成する関数を渡す
Promiseそのものではなく、生成する関数を使うことで、Promiseの開始を遅延できる
関数名を変えた
code:script.js
export async function parallel(promiseCallbacks, {maxInProgress = undefined} = {}) {
if (!maxInProgress || maxInProgress < 0
|| promiseCallbacks.length <= maxInProgress)
return await Promise.all(promiseCallbacks.map(callback => callback()));
let progressList = promiseCallbacks.map(_ => false);
let result = [];
.map(async index => {
do {
//console.log(Executing index ${index}...);
progressListindex = true; //console.log(Executed ${index}.);
index = progressList.findIndex(state => !state);
} while(index !== -1)
}));
return result;
}