Promise三个状态

一个 Promise 对象代表一个异步操作的结果。它可能处于以下三种状态之一:

  1. Pending(待定)

    • 初始状态,既不是成功也不是失败。
    • 在这个状态下,操作尚未完成,也未解决或拒绝。
  2. Fulfilled(已实现)

    • 表示操作成功地完成。
    • 进入这个状态的 Promise 会携带一个值,这个值作为成功的结果。
    • 通过 .then() 方法处理结果。
  3. Rejected(已拒绝)

    • 表示操作失败。
    • 进入这个状态的 Promise 会携带一个原因,表示失败的原因。
    • 通过 .catch() 方法处理错误。

状态转换规则:

  • 一个 Promise 一旦从 Pending 状态变为 Fulfilled 或 Rejected,就不可以再进行其他状态转变。这意味着 Promise 的状态只能改变一次。
  • Promise 只能从 Pending 状态转换成 Fulfilled 或 Rejected 状态。

状态转换流程:

  • PendingFulfilled当异步操作成功完成,并且未来可以用 .then() 方法访问结果。
  • PendingRejected当异步操作失败,未来可以用 .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 状态并输出 '操作失败'

相关推荐
Hyyy7 小时前
普通前端续命周报——第1周
前端·javascript
KaMeidebaby8 小时前
卡梅德生物技术快报|抗独特型抗体开发:半抗原检测技术瓶颈拆解,抗独特型抗体开发工程化实践
前端·数据库·人工智能·其他·百度·新浪微博
2501_940041748 小时前
纯前端创意交互:五款全新实用工具与视觉应用生成指南
前端·交互
刀法如飞8 小时前
《道德经》简单解说版-第 2 章:天下皆知美之为美
前端·后端·面试
发现一只大呆瓜10 小时前
超全 Vite 性能优化指南:网络、资源、预渲染三维落地方案
前端·面试·vite
IT_陈寒11 小时前
Vue的computed属性怎么突然不更新了?
前端·人工智能·后端
智商不够_熬夜来凑11 小时前
【Picker】单选多选
前端·javascript·vue.js
米饭不加菜11 小时前
Typora 原生流程图语法完全指南(Flowchart.js)
前端·javascript·流程图
scan72411 小时前
langgraphy条件边
前端·javascript·html
冰小忆12 小时前
类变量在继承场景下的初始化规则是怎样的?
java·前端·数据库