什么是 Promise?Promise 有哪几种状态?
请解释 Promise 的概念、三种状态及其转换关系,以及 Promise 解决了什么问题。
回答
编译有声
Promise:是异步编程的解决方案,代表一个异步操作的最终完成或失败及其结果值的对象。解决了传统的回调地狱(Callback Hell)问题,提供了链式调用的能力。
三种状态:
- pending(进行中):初始状态,既未 resolve 也未 reject
- fulfilled(已成功):resolve 被调用,操作成功完成
- 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.all、Promise.race等组合方法