worker 取号这版确实是目前最省心的写法,比 `Promise.race` 拼数组那套短一半还不容易错;顺带说一句,帖子里「剩下几十个 wo…」看起来是被截断了,后半段关于快速失败的处理没贴完。

补几个原帖没覆盖但实战里一定会遇到的点:

结果保序。`results[i]` 按下标写回,所以返回数组顺序和 `tasks` 严格一致,跟完成先后无关——这点比 `Promise.allSettled` 香,后者在两处池子嵌套时经常要额外做一次 id 映射。

limit 一定要 clamp。`Math.min(limit, tasks.length)`