Promise 是为管理异步状态设计的对象,明确表达 pending/fulfilled/rejected 三种状态;构造函数执行器立即同步执行,resolve/reject 为微任务;链式处理需用 .catch() 统一捕获错误,避免 then 第二参数遗漏;async/await 是语法糖,await 后非 Promise 会自动包装;并发请求优先用 Promise.all 而非串行 await。

Promise 不是回调函数的语法糖,它是为解决异步操作状态管理而设计的对象 —— 用它不是为了“写得更酷”,而是为了能明确表达“等待中/成功/失败”这三种确定状态,并让链式处理变得可靠。
Promise 构造函数里必须传一个执行器函数
这个执行器函数会立即执行,且接收两个参数:resolve 和 reject,它们都是函数。你不能只调用其中一个,也不能漏掉错误分支:
-
resolve表示异步成功,触发.then()的第一个回调 -
reject表示异步失败,触发.catch()或.then()的第二个回调 - 如果执行器内部抛出未捕获异常(比如
throw new Error('xxx')),等价于调用reject
常见错误:在执行器里忘了调用 resolve 或 reject,导致 Promise 永远处于 pending 状态,后续链式调用卡住。
Promise.then() 接收两个可选函数,但别把错误处理全塞进第二个参数
.then(onFulfilled, onRejected) 的第二个参数只能捕获前一个 Promise 的拒绝(reject),无法捕获 onFulfilled 内部抛出的错误 —— 这点极易被忽略:
立即学习“Java免费学习笔记(深入)”;
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。它不是新的编程语言,而是一种使用现有标准的新方法,最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容,不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。《php中级教程之ajax技术》带你快速
- 写成
promise.then(() => { throw new Error('oops') }, handleError),handleError不会执行 - 正确做法是统一用
.catch(),它能捕获链中任意环节的拒绝(包括then回调里的异常) - 多个
.then()串联时,每个返回值自动包装成新 Promise;返回普通值 → 下个then收到该值;返回 Promise → 下个then等它 settle 后再执行
async/await 是 Promise 的语法封装,不是替代品
async 函数本质就是返回 Promise 的函数,await 只是暂停当前 async 函数执行、等待 Promise settle 的语法糖:
-
await后面如果不是 Promise,会自动用Promise.resolve()包装 -
await遇到 rejected Promise 会直接抛出错误,需要用try/catch捕获,而不是靠.catch() - 不要在循环里盲目
await多个请求 —— 如果无依赖关系,用Promise.all([p1, p2, p3])并发更高效
典型陷阱:在 for...of 中对数组逐个 await fetch(url),实际变成串行请求,耗时翻倍。
Promise.race() 和 Promise.all() 的行为差异直接影响错误策略
这两个静态方法常被误用,关键区别不在“快慢”,而在“谁决定最终状态”:
-
Promise.race([p1, p2]):谁先 settle(无论 fulfilled 还是 rejected),就以它的结果为准;若最先 settle 的是 reject,整个 race 就 rejected —— 即使其他 Promise 其实成功了 -
Promise.all([p1, p2]):全部 fulfilled 才 resolve;只要有一个 rejected,立刻 reject(不等其余);想“全部执行完不管成败”,得用Promise.allSettled() - 超时控制常用
Promise.race([apiCall, timeoutPromise]),但要注意 timeoutPromise 必须是真正 reject 的 Promise,否则 race 不会切换状态
最易被忽略的一点:Promise 构造函数里的执行器是同步执行的,但它的 resolve/reject 回调是微任务,总在当前宏任务结束后、下次宏任务开始前运行 —— 这决定了它和 setTimeout 的执行顺序。










