p-limit 是轻量级 JavaScript 并发控制库,通过限制异步任务最大并发数(如 3 个),避免资源过载;支持 Node.js 和浏览器,提供 limit() 包装任务、limit.map 批量处理及 activeCount/pendingCount 状态监控。

高并发资源分配不是靠“加线程”,而是靠节制、分批、错峰——JavaScript 单线程下,真正的瓶颈往往不在 CPU,而在网络连接数、服务端限流、浏览器并发请求数(通常 6~10 个)、内存堆积或未释放的 Promise。
明确并发上限,避免请求雪崩
浏览器对同一域名的并发 HTTP/1.1 请求有硬性限制(Chrome 默认 6 个),超出的请求会排队等待。盲目发起几十个 fetch,不仅不会更快,反而造成队头阻塞和超时风险。
- 用
Promise.allSettled()替代Promise.all():单个失败不影响其余请求,适合批量采集类场景 - 对强依赖链路(如用户 → 订单 → 商品详情),仍需串行或带缓存的半并行,而非强行并发
- 检查后端是否支持 HTTP/2 或 HTTP/3:它们允许多路复用,能显著提升并发吞吐量
用工具库做可控并发调度
原生 JS 不提供“最多同时跑 5 个请求”的能力,需要借助轻量工具或手动实现。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
-
p-limit是最常用方案:创建一个限流器,所有异步任务统一通过它提交 - 示例:批量上传 100 个文件,限制同时上传 3 个
- 不推荐手写“计数器 + 递归”方案——容易漏掉错误清理、状态竞争或内存泄漏
按优先级动态分配资源
不是所有请求都该被平等对待。首屏数据、用户操作反馈、错误上报应享有更高调度权重。
立即学习“Java免费学习笔记(深入)”;
- 给关键请求加 timeout 和 abortController,避免被慢接口拖垮整体体验
- 非关键请求(如埋点、预加载)可延迟、降频、或在空闲时段(
requestIdleCallback)执行 - 结合
AbortSignal.timeout()(现代浏览器支持)自动中断超时任务,释放连接
监控与降级:让并发“可感知、可干预”
上线后并发行为必须可观测,否则等于盲开油门。
- 记录每个批次请求的平均耗时、失败率、排队延迟(从调用到真正发出的时间差)
- 当失败率突增或排队时间 > 500ms,自动触发降级:减少并发数、切换备用接口、或返回缓存数据
- 利用
performance.getEntriesByType('resource')分析真实网络并发表现,而非仅看代码逻辑


















