27 lines
558 B
JavaScript
27 lines
558 B
JavaScript
export async function sleep_ms(ms) {
|
|
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
}
|
|
|
|
export async function map_limit(items, worker) {
|
|
const list = Array.isArray(items) ? items : [];
|
|
|
|
const res = new Array(list.length);
|
|
let idx = 0;
|
|
|
|
async function run_one() {
|
|
while (idx < list.length) {
|
|
const cur = idx;
|
|
idx += 1;
|
|
res[cur] = await worker(list[cur], cur);
|
|
}
|
|
}
|
|
|
|
const runners = [];
|
|
for (let i = 0; i < list.length; i += 1) {
|
|
runners.push(run_one());
|
|
}
|
|
|
|
await Promise.all(runners);
|
|
return res;
|
|
}
|