前端知库

p-limit

为异步函数设置并发上限的小型开源库,适合限制批量请求或独立异步任务同时运行的数量。

适合批量获取详情、处理多个文件等“任务独立,但不能同时启动太多”的场景。任务应作为函数交给 limiter,由它决定何时调用;如果先执行所有 fetch,再把得到的 Promise 放进队列,请求已经发出,并发限制就失去作用。

它限制的是同时运行数量,不是每秒请求次数,也不会把 CPU 密集 JavaScript 自动放进 Worker。需要速率限制、优先级或复杂队列状态时,应评估更完整的队列方案。只限制运行任务不代表等待队列不会增长,持续输入仍需应用自己的容量和背压策略。

队列清理不等于取消已运行请求。正在执行的 fetch 需配合 AbortSignal,文件或其他任务也需对应取消协议。本次核对的 7.3.3 提供 rejectOnClear 选项,启用后 clearQueue 会以 AbortError 拒绝尚未执行的任务;默认关闭时,这些 Promise 可能保持未结算。若调用方用 Promise.all 等待全部任务,尤其要明确这一行为。不要把清空队列当作全部 Promise 都已成功完成,旧版本也不能直接套用这个选项。

本次核对官方 p-limit 7.3.3 发布包的 README 与 MIT 许可,免费用于商业项目,分发时保留许可声明。它支持 Node.js 与浏览器使用,接入时仍要检查所选版本的运行时要求与 ESM 构建配置。本条不包含任何付费队列托管服务。