Appearance
并发控制:Promise 限流器如何维持吞吐与顺序
主题边界
- 并发控制题要同时满足最大并发数、结果收集、错误传播和尾部任务接续调度。
- 本质上是一个任务队列和运行池问题。
机制与流程
- 启动阶段先拉起不超过 limit 个任务,任一任务完成后再从队列取下一个补位。
- 实现中通常要维护当前运行数、下一个任务索引、结果数组和整体完成 Promise。
- 错误策略需要事先定义:是遇错即停,还是收集全部结果后统一返回。
关键差异
- 并发限制解决的是同时执行上限,不等于重试、超时或取消。
- 顺序输出与顺序执行不是同一件事,可以并发执行但按原始索引收集结果。
边界条件
- 如果任务函数在调用时就立即副作用执行,而不是惰性函数,限流器会失效。
- 没有取消与超时能力的限流器,在真实接口治理中能力仍然不完整。
工程落点
- 文件上传、图片预取、批量接口和爬取任务都需要并发窗口控制,防止打爆客户端或服务端。
- 好的实现要把调度逻辑、错误策略和资源释放区分开。