推荐答案
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
:-- -------------------- ---- ------- ----- ------- - --- ----------------- ------- -- - --------------------- ------------------- -- --------- --- --------------------- -- - -------------------- -- ----------- ---------------- -- - ------------------- -- ---- ---
总结
Promise 的三种状态是 Pending
、Fulfilled
和 Rejected
。理解这些状态及其转换机制对于正确处理异步操作至关重要。