推荐答案
JavaScript 中 Promise 的三种状态是:
- Pending(等待中):初始状态,既没有被兑现,也没有被拒绝。
- Fulfilled(已兑现):表示操作成功完成。
- Rejected(已拒绝):表示操作失败。
本题详细解读
Pending(等待中)
- 定义:Promise 对象刚被创建时的初始状态。此时,Promise 既没有被兑现,也没有被拒绝。
- 特点:在这个状态下,Promise 可以转换为
Fulfilled或Rejected状态。
Fulfilled(已兑现)
- 定义:表示 Promise 已经成功完成,并且已经返回了一个值。
- 特点:一旦 Promise 进入
Fulfilled状态,它将不再改变状态,并且会调用.then()方法中的回调函数。
Rejected(已拒绝)
- 定义:表示 Promise 操作失败,并且已经返回了一个错误原因。
- 特点:一旦 Promise 进入
Rejected状态,它将不再改变状态,并且会调用.catch()方法中的回调函数。
状态转换
- Pending -> Fulfilled:当异步操作成功完成时,Promise 从
Pending状态转换为Fulfilled状态。 - Pending -> Rejected:当异步操作失败时,Promise 从
Pending状态转换为Rejected状态。
示例代码
// www.javascriptcn.com code example
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
const success = true;
if (success) {
resolve("Operation successful!");
} else {
reject("Operation failed!");
}
}, 1000);
});
promise
.then(result => {
console.log(result); // "Operation successful!"
})
.catch(error => {
console.error(error); // "Operation failed!"
});在这个示例中,Promise 初始状态为 Pending,1秒后根据 success 变量的值,Promise 会转换为 Fulfilled 或 Rejected 状态。