状态与执行器
关键代码
状态快照
等待运行。
先理解底层,再用 async/await 写业务
日常代码优先写 async/await,但它建立在 Promise 之上。 只有理解状态、错误传播和并发组合,才能正确处理请求、超时、降级与页面加载。
关键代码
等待运行。
这些规则比背 API 更能避免线上异步问题。
业务流程用 try/catch 表达;底层仍按 Promise 的失败语义理解。
互不依赖的任务先创建 Promise,再用 Promise.all 一次等待。
race 超时只决定结果;请求取消应使用
AbortController。
避免 new Promise(async () => {});直接写 async 函数可保留错误传播。
根据失败策略选方法,而不是只记“哪个能并行”。
| API | 何时成功 | 何时失败 | 典型场景 |
|---|---|---|---|
Promise.all |
全部成功 | 任一失败,立即 reject | 页面关键数据缺一不可 |
Promise.allSettled |
全部完成 | 不会因单项失败整体 reject | 批量任务、局部降级 |
Promise.race |
第一个完成的结果 | 第一个完成的是失败 | 超时兜底、竞争策略 |
Promise.any |
第一个成功的结果 | 全部失败,得到 AggregateError | 多镜像、多后备源 |