·更新于 2026年4月21日· 53 次浏览 JavaScript异步
JavaScript 异步:Promise 组合与结构化并发
`Promise.all` / `allSettled` / `race` 语义差异;取消与超时模式;`async` 函数隐式返回 Promise 的错误栈。
作者
ZHOU YI
Promise.all 任一 reject 即整体 reject;allSettled 适合批量任务需要独立结果与错误信息的场景。
js
const results = await Promise.allSettled(urls.map(u => fetch(u)))
const ok = results.filter(r => r.status === 'fulfilled')超时包装
常用 Promise.race 与 sleep/reject 组合;注意清理底层请求(AbortController)避免泄漏与无效负载。
- 顶层
await在 ESM 中阻塞模块求值,谨慎用于短生命周期脚本 - 错误要
await链接中显式捕获,否则易成未处理 rejection