重点总结:定义:Promise 是异步编程的一种解决方案,解决了回调地狱问题,提供了统一的 API。状态:它有 Pending、Fulfilled、Rejected 三种状态,且状态不可逆。使用:构造函数是同步执行的。.then 返回新 Promise,支持链式调用。.catch 处理错误(冒泡机制)。常用 API:all(并发,全对才对)。race(赛跑,谁快用谁)。allSettled(不管死活,都要结果)。any(只要有一个活的就行)。运行机制:Promise 的回调是微任务,在同步代码执行完后、宏任务执行前执行,这涉及到了 Event Loop。最佳实践:现在项目中主要配合 async/await 使用,使异步代码看起来像同步代码,可读性更强。
1. 什么是 Promise?(核心概念)
一句话定义: Promise 是异步编程的一种解决方案,它是一个对象,代表了一个异步操作的最终完成(或失败)及其结果值。
1.1 为什么要用 Promise?
在 Promise 出现之前,我们处理异步主要靠回调函数(Callback)。当异步操作依赖另一个异步操作时,就会出现'回调地狱'(Callback Hell):
// 噩梦般的回调地狱
doSomething(function(result) {
doSomethingElse(result, function(newResult) {
doThirdThing(newResult, function(finalResult) {
console.log('Got the final result: ' + finalResult);
}, failureCallback);
}, failureCallback);
}, failureCallback);
Promise 的作用: 将嵌套的回调改为链式调用,解决了回调地狱问题,使代码更具可读性和逻辑性,同时提供了更好的错误处理机制。
1.2 Promise 的三种状态
Promise 是一个状态机,它拥有三种状态:
- Pending(进行中):初始状态,既没有被兑现,也没有被拒绝。
- Fulfilled(已成功/Resolved):意味着操作成功完成。
- Rejected(已失败):意味着操作失败。
重要特性:状态不可逆
一旦状态从 Pending 变为 Fulfilled 或 Rejected,状态就固定了,不会再发生改变。这被称为 "Settled"(已决议)。
2. Promise 的基本使用与实例方法
2.1 构造函数 (Executor)
const p = new Promise((resolve, reject) => {
.();
( {
success = ;
(success) {
();
} {
();
}
}, );
});

