白狗子的博客

「天上浮云如白衣,斯须改变如苍狗。」——杜甫

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()])

© 2025 My Blog. Built with Nuxt.js v4