一个 Promise 对象代表一个异步操作的结果。它可能处于以下三种状态之一:
-
Pending(待定):
- 初始状态,既不是成功也不是失败。
- 在这个状态下,操作尚未完成,也未解决或拒绝。
-
Fulfilled(已实现):
- 表示操作成功地完成。
- 进入这个状态的 Promise 会携带一个值,这个值作为成功的结果。
- 通过
.then()
方法处理结果。
-
Rejected(已拒绝):
- 表示操作失败。
- 进入这个状态的 Promise 会携带一个原因,表示失败的原因。
- 通过
.catch()
方法处理错误。
状态转换规则:
- 一个 Promise 一旦从 Pending 状态变为 Fulfilled 或 Rejected,就不可以再进行其他状态转变。这意味着 Promise 的状态只能改变一次。
- Promise 只能从 Pending 状态转换成 Fulfilled 或 Rejected 状态。
状态转换流程:
Pending
→Fulfilled
:当异步操作成功完成,并且未来可以用.then()
方法访问结果。Pending
→Rejected
:当异步操作失败,未来可以用.catch()
方法访问错误信息。
示例:
javascript
const promiseExample = new Promise((resolve, reject) => {
// 异步操作
setTimeout(() => {
const success = true; // 模拟异步操作结果
if (success) {
resolve('操作成功'); // 将 Promise 状态置为 Fulfilled
} else {
reject('操作失败'); // 将 Promise 状态置为 Rejected
console.log('aaaaa', myPromise); //可以直接打印Promise来查看PromiseState, 为rejected.
}
}, 1000);
});
promiseExample
.then(result => console.log(result)) // 输出 "操作成功"
.catch(error => console.error(error)); // 如果失败,捕获并输出错误
在这个示例中,Promise 在 1 秒后会进入 Fulfilled
状态并输出 '操作成功'
,或进入 Rejected
状态并输出 '操作失败'
。