内置对象

发布于 2026-09-01

Promise

Promise 是 JavaScript 中的一个对象,用于处理异步操作。

Promise

JavaScript 中处理异步操作的对象,代表一个"现在还没有结果,但将来会有结果"的值。

三种状态

pending(进行中)→ fulfilled(成功)
                 → rejected(失败)

一旦从 pending 变为 fulfilled 或 rejected,状态就不可逆,这叫"settled"(已敲定)。

基本用法

// 创建一个 Promise
const fetchData = new Promise<string>((resolve, reject) => {
  setTimeout(() => {
    const success = true;
    if (success) {
      resolve("数据获取成功"); // 成功时调用
    } else {
      reject(new Error("失败了")); // 失败时调用
    }
  }, 1000);
});
 
// 消费这个 Promise
fetchData
  .then((result) => console.log(result))   // 处理成功
  .catch((err) => console.error(err))       // 处理失败
  .finally(() => console.log("结束"));      // 无论成功失败都执行

async/await 语法糖

现代写法更常用 async/await,本质上还是 Promise:

async function getData() {
  try {
    const result = await fetchData; // 等待 Promise resolve
    console.log(result);
  } catch (err) {
    console.error(err);
  }
}

await 只能用在 async 函数里,它会"暂停"函数执行,直到 Promise 敲定,但不会阻塞主线程(这是 JS 单线程事件循环的精髓)。

常用静态方法

romise.all([p1, p2, p3])      // 全部成功才成功,一个失败就失败
Promise.allSettled([p1, p2])   // 等所有都敲定,不管成功失败
Promise.race([p1, p2])         // 谁先敲定就用谁的结果
Promise.any([p1, p2])          // 只要有一个成功就成功