JavaScript-面试-Promise与异步模式
2026年10月16日·Admin·2 次浏览
面试题:Promise 状态?async/await 与 Promise 关系?
Promise 三种状态
pending → fulfilled 或 pending → rejected,不可逆。then 返回新 Promise(链式)。
链式与错误
then(onFulfilled, onRejected):onRejected只消化上一环的 reject;中间抛错会传到下游catch。catch后若返回普通值,后续then视为 resolved。finally:无论成败都执行,不改变最终值(除非finally里抛错或返回 pending 的 Promise)。
Promise.all / race / allSettled
| API | 行为 |
|---|---|
all |
全成功才成功;一个 reject 立刻 reject |
race |
第一个落定的结果决定 |
allSettled |
等全部结束,结果数组含 fulfilled/rejected |
async/await
async函数一定返回 Promise。await暂停当前 async 函数,把后续代码放进微任务;不阻塞主线程其它任务。- 错误:用
try/catch包await,或在返回的 Promise 上.catch()。
并发写法
const [a, b] = await Promise.all([fetchA(), fetchB()])