ES6 Promise 基础用法详解:resolve、reject、then、catch 与 all

作者:半夏

时间:2026-10-31

浏览:381

本文详细介绍 ES6 中 Promise 对象的核心用法,涵盖其三种状态(Pending、Fulfilled、Rejected)及状态转换方法 resolve 和 reject。通过示例演示如何使用 then 处理成功结果、catch 捕获异常,以及利用 all 方法并发等待多个 Promise 完成,帮助开发者避免回调地狱,实现更清晰的异步编程。

文章目录

Promise 状态与核心概念

在 JavaScript 语言里,Promise 是处理异步任务的对象。它让开发者能用更清晰、可控的方式处理异步逻辑,从而规避回调地狱。Promise 具备三种状态:

Pending:代表异步操作正在执行。Fulfilled:代表异步操作已成功。Rejected:代表异步操作已失败。Promise 提供 resolve 和 reject 两个方法以变更状态,并通过 then 和 catch 方法分别处理成功与失败的情况。all 方法用于等待多个 Promise 实例全部完成。

Promise 基础用法的具体说明如下:

创建 Promise 与 then/catch 用法

创建 Promise:通过 new Promise() 构造函数创建新实例,传入执行器函数(executor)。该函数接收 resolve 和 reject 两个参数。调用 resolve 将状态设为 fulfilled,调用 reject 将状态设为 rejected。

const promise = new Promise((resolve, reject) => {
  // 异步操作
  if (/* 异步操作成功 */) {
    resolve(/* 成功的结果 */);
  } else {
    reject(/* 失败的原因 */);
  }
});

使用 then 方法:该方法用于处理 fulfilled 状态。它接收两个参数,第一个是成功回调函数,第二个是可选的失败回调函数。

promise.then((result) => {
  // 成功的回调函数
  console.log(result);
}, (error) => {
  // 失败的回调函数(可选)
  console.error(error);
});

使用 catch 方法:该方法用于处理 rejected 状态。其功能等同于仅传入失败回调函数的 then 方法。

promise.catch((error) => {
  // 失败的回调函数
  console.error(error);
});

Promise.all 与 Promise.race 方法

使用 all 方法:该方法用于等待一组 Promise 实例全部完成。它返回一个新的 Promise 对象,仅当所有传入的 Promise 实例都成功时,新对象才成功;若其中任何一个失败,新对象也会随之失败。

const promises = [promise1, promise2, promise3];
Promise.all(promises).then((results) => {
  // 所有 Promise 实例都成功时的回调函数
  console.log(results);
}).catch((error) => {
  // 任何一个 Promise 实例失败时的回调函数
  console.error(error);
});

使用 race 方法:该方法用于等待一组 Promise 实例中任意一个完成。它返回一个新的 Promise 对象,当第一个完成的 Promise 实例出现时(无论成功或失败),新对象即完成。

const promises = [promise1, promise2, promise3];
Promise.race(promises).then((result) => {
  // 第一个 Promise 实例完成时的回调函数
  console.log(result);
}).catch((error) => {
  // 第一个 Promise 实例失败时的回调函数
  console.error(error);
});

本文介绍了 ES6 Promise 的基础用法(包括 resolve、reject、then、catch 和 all)。如需了解更多 ES6 Promise 相关内容,请查阅本站往期文章或继续阅读后续文章。感谢大家的支持!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章