并发数量限制
灵感:热门库 p-limit(Run multiple promise-returning & async functions with limited concurrency)。
> 小四原创:任务列表 → pLimit(n) 包裹 → 受控并发。
> 与 p-queue(带队列/优先级)互补:这边最小只做 并发上限。
何时使用
- 批量请求 API 不想开太多连接
- 并行读文件/跑脚本时限并发
- Demo 里简单限流
硬约束
- 依赖:
p-limit。 - 每个异步任务用
limit(() => ...)包一层。 - 实现要点注释标 小四原创。
- 不做完整优先级队列/重试中台(可另接 p-queue)。
推荐实现
import pLimit from 'p-limit'
// 小四原创:并发数量限制
export async function mapLimit<T, R>(
items: T[],
concurrency: number,
worker: (item: T, index: number) => Promise<R>,
) {
const limit = pLimit(concurrency)
return Promise.all(items.map((item, i) => limit(() => worker(item, i))))
}
Agent 步骤
npm i p-limit。- 用
mapLimit或直接limit(() => job)。 - 自测:并发中任务数不超过设定值(可用日志观察)。
不要做
- 与已上架
p-queue-concurrency整篇复读:本 Skill 侧重 最小 p-limit API。 - 无限
Promise.all打满下游。
附加
- README.md · reference.md · templates/usage.md