Promise相关Api
1. Promise.all(全部成功才成功,有一个失败就立即失败(短路))
常见 bug:只要一个接口 500 就全部中断
适用场景:
所有请求必须成功才能继续(例如:进入页面时同时加载 3 个关键数据)
2. Promise.allSettled (不管成功失败都等全部执行完,不会短路)
返回格式:
适用场景:
希望所有任务都执行完
某个失败不影响后续逻辑(
例如:多个请求并发,即使部分失败也给用户显示已有数据)
3. Promise.race(谁先结束就用谁的结果(无论成功还是失败))
适用场景:
超时控制
例如:function timeout(p, ms) { return Promise.race([ p, new Promise((_, reject) => setTimeout(() => reject("timeout"), ms)) ]); }
4. Promise.any(只要有一个成功就成功,全部失败才失败)
适用场景:
多源数据(例如:多个备用 API,谁先成功用谁)
接口容灾、兜底
举例:
结论:
必须全部成功 → Promise.all
即使失败也要全部执行 → Promise.allSettled
只等第一个接口 → Promise.race
多备份接口取最快成功 → Promise.any
| API | 成功条件 | 失败条件 | 是否等待全部 |
|---|---|---|---|
| Promise.all | 全部成功 | 一个失败就失败 | ❌ |
| Promise.allSettled | 不关心 | 不关心 | ✔️ |
| Promise.race | 第一个成功 | 第一个失败 | ❌(只等第一个) |
| Promise.any | 一个成功 | 全部失败 | ❌ |
浙公网安备 33010602011771号