MST

星途 面试题库

面试题:JavaScript 中 Promise 状态转换的基本理解

请描述 JavaScript 中 Promise 有哪几种状态,以及它们之间是如何转换的。同时,举例说明如何手动触发这些状态转换。
14.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

Promise的状态

  1. Pending(进行中):初始状态,既没有被兑现,也没有被拒绝。
  2. Fulfilled(已兑现):意味着操作成功完成。
  3. Rejected(已拒绝):意味着操作失败。

状态转换

  1. Pending -> Fulfilled:当Promise的resolve函数被调用时,Promise从Pending状态转换到Fulfilled状态。
  2. Pending -> Rejected:当Promise的reject函数被调用时,Promise从Pending状态转换到Rejected状态。 一旦Promise进入FulfilledRejected状态,就不会再转换到其他状态。

手动触发状态转换示例

// Pending -> Fulfilled
const promise1 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('成功的数据');
  }, 1000);
});

promise1.then((value) => {
  console.log(value); // 输出:成功的数据
});

// Pending -> Rejected
const promise2 = new Promise((resolve, reject) => {
  setTimeout(() => {
    reject(new Error('操作失败'));
  }, 1500);
});

promise2.catch((error) => {
  console.error(error); // 输出:Error: 操作失败
});