Skip to content

Promise

一句话解释

Promise 是代表“一个未来才会结束的异步操作结果”的对象,有等待、成功、失败三种状态。

用大白话说

Promise(承诺)是 JS 里处理异步操作的现代方式。可以把它理解成餐厅的取餐号——你现在下单(发起异步操作),拿到一个号(Promise 对象),号现在还没结果(pending),等会儿叫号了要么给你餐(fulfilled / resolved),要么告诉你做不了(rejected)。

Promise 有三种状态:

  • pending(等待中):操作还在进行
  • fulfilled(已成功):操作完成,有结果
  • rejected(已失败):操作失败,有错误

状态一旦从 pending 变成 fulfilled 或 rejected,就再也不能变。用 .then() 拿成功结果,用 .catch() 捕获失败,用 .finally() 做收尾。

Promise 相比回调的最大优势是链式调用fetch().then().then().catch(),避免回调地狱,代码更清晰。再配合 async/await,异步代码能写得像同步一样直观。

示例

javascript
const p = new Promise((resolve, reject) => {
  setTimeout(() => resolve("完成!"), 1000);
});
p.then((result) => console.log(result))  // 1 秒后打印“完成!”
 .catch((err) => console.error(err));

new Promise 接收一个函数,里面调用 resolve 表示成功、reject 表示失败。用 .then 拿结果、.catch 捕获错误。

工作原理

  1. new Promise((resolve, reject) => { ... }) 创建 Promise
  2. 异步操作成功时调用 resolve(结果),状态变 fulfilled
  3. 失败时调用 reject(错误),状态变 rejected
  4. .then() 处理成功、.catch() 处理失败,可链式调用

常见混淆

  • 容易混淆的对象: 回调函数

    关键区别: 回调是把函数当参数传,Promise 是返回一个代表未来结果的对象。Promise 用 .then() 链式调用,避免回调嵌套,错误处理也更统一。

相关术语

相关资源

相关课程

学习基础知识

通过结构化课程深入理解这个主题。

查看课程

解读错误信息

用大白话解释常见错误——什么意思、为什么发生、如何修复。

查看错误

← 返回术语表