Parallel Promise Limiter (pp-limit) 是一个 Promise 并发控制器,可以控制同时进行的任务数量。
pnpm i @rsoram/pp-limit
允许同时运行 5 个任务的并行控制器
import { PPLimiter } from "@rsoram/pp-limit";
const ppl = new PPLimiter(5);
add
函数接收一个普通函数,该函数须返回一个 Promise,以此防止 Promise 被立即执行
add
函数返回的 Promise 可视作输入的 Promise
ppl
.add(() => new Promise((resolve) => resolve(1)))
.then((result) => console.log(`${result} == 1`)); // 1 == 1
const tasks = Array.from(
{ length: 20 },
(_, i) => () => new Promise((resolve) => resolve(i)),
);
await Promise.all(tasks.map((t) => ppl.add(t)));