推荐答案
Promise 的三种状态是:
- Pending(等待中):初始状态,既没有被兑现,也没有被拒绝。
- Fulfilled(已兑现):操作成功完成,Promise 被兑现。
- Rejected(已拒绝):操作失败,Promise 被拒绝。
本题详细解读
Promise 的状态机制
Promise 是 JavaScript 中用于处理异步操作的对象。它有三种状态,这些状态是不可逆的,一旦 Promise 从 Pending 状态转变为 Fulfilled 或 Rejected 状态,就不能再改变。
Pending(等待中):
- 这是 Promise 的初始状态。当 Promise 被创建时,它处于
Pending状态。 - 在这个状态下,Promise 既没有被兑现,也没有被拒绝。
- 例如:
const promise = new Promise((resolve, reject) => { // 异步操作 }); console.log(promise); // Promise { <pending> }
- 这是 Promise 的初始状态。当 Promise 被创建时,它处于
Fulfilled(已兑现):
- 当 Promise 成功完成时,它会从
Pending状态转变为Fulfilled状态。 - 在这个状态下,Promise 的结果值可以通过
.then()方法获取。 - 例如:
const promise = new Promise((resolve, reject) => { resolve('Success'); }); promise.then((result) => { console.log(result); // 'Success' });
- 当 Promise 成功完成时,它会从
Rejected(已拒绝):
- 当 Promise 失败时,它会从
Pending状态转变为Rejected状态。 - 在这个状态下,Promise 的错误原因可以通过
.catch()方法或.then()的第二个参数获取。 - 例如:
const promise = new Promise((resolve, reject) => { reject('Error'); }); promise.catch((error) => { console.log(error); // 'Error' });
- 当 Promise 失败时,它会从
状态转换
- 一旦 Promise 从
Pending状态转变为Fulfilled或Rejected状态,它的状态就固定了,不能再改变。 - 例如,以下代码中的 Promise 只会输出
Fulfilled,而不会输出Rejected:// www.javascriptcn.com code example const promise = new Promise((resolve, reject) => { resolve('Fulfilled'); reject('Rejected'); // 这行代码不会被执行 }); promise.then((result) => { console.log(result); // 'Fulfilled' }).catch((error) => { console.log(error); // 不会执行 });
总结
Promise 的三种状态是 Pending、Fulfilled 和 Rejected。理解这些状态及其转换机制对于正确处理异步操作至关重要。