CodeWalk

什么是 Promise?Promise 有哪几种状态?

作者:编译有声 · 2026-05-30 12:55

请解释 Promise 的概念、三种状态及其转换关系,以及 Promise 解决了什么问题。

回答

编译有声

Promise:是异步编程的解决方案,代表一个异步操作的最终完成或失败及其结果值的对象。解决了传统的回调地狱(Callback Hell)问题,提供了链式调用的能力。

三种状态

  1. pending(进行中):初始状态,既未 resolve 也未 reject
  2. fulfilled(已成功):resolve 被调用,操作成功完成
  3. rejected(已失败):reject 被调用或抛出异常

状态转换

  • pending → fulfilled(不可逆)
  • pending → rejected(不可逆)
  • 一旦状态变更,永久固定

基本用法

const p = new Promise((resolve, reject) => {
  setTimeout(() => resolve('成功'), 1000);
});
p.then(val => console.log(val)).catch(err => console.error(err));

解决的问题

  • 回调地狱:将嵌套回调改为链式调用
  • 错误处理统一:catch 集中处理所有异常
  • 并行异步:Promise.allPromise.race 等组合方法