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 捕获错误。
工作原理
new Promise((resolve, reject) => { ... })创建 Promise- 异步操作成功时调用
resolve(结果),状态变 fulfilled - 失败时调用
reject(错误),状态变 rejected - 用
.then()处理成功、.catch()处理失败,可链式调用
常见混淆
容易混淆的对象: 回调函数
关键区别: 回调是把函数当参数传,Promise 是返回一个代表未来结果的对象。Promise 用 .then() 链式调用,避免回调嵌套,错误处理也更统一。
相关术语
相关资源
相关课程
- 异步 JavaScript
Promise 是现代异步编程的核心
学习基础知识
通过结构化课程深入理解这个主题。
解读错误信息
用大白话解释常见错误——什么意思、为什么发生、如何修复。