promise通过返回新promise实现串行链式调用:每个then返回新promise,其状态由回调返回值决定——普通值直接resolve,返回promise则继承其状态,抛错则reject;错误可统一catch。

Promise 通过 返回新 Promise 实例 实现串行链式调用,让异步任务按依赖顺序依次执行:前一个任务的完成结果作为下一个任务的输入,错误可统一捕获,避免回调地狱。
链式调用的核心机制:then 返回新 Promise
每个 then() 方法都返回一个新的 Promise,其状态由该 then 回调函数的返回值决定:
- 若回调返回普通值(如字符串、数字、对象),新 Promise 立即以
resolved状态兑现,值为该返回值; - 若回调返回另一个 Promise,新 Promise 的状态和结果将**等待并继承**该 Promise;
- 若回调抛出异常或返回被拒绝的 Promise,新 Promise 会以
rejected状态拒绝。
正是这种“返回即接力”的设计,使多个 then 能自然串联,形成执行流。
处理有依赖的多异步任务(如:获取用户 → 获取订单 → 获取商品详情)
假设三个函数都返回 Promise:
const fetchUser = id => Promise.resolve({ id, name: 'Alice' });const fetchOrders = user => Promise.resolve([{ orderId: 'O001', userId: user.id }]);
const fetchProduct = order => Promise.resolve({ id: 'P100', name: 'Laptop' });
串行写法如下:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
.then(user => {
console.log('用户已获取:', user);
return fetchOrders(user); // 传入上一步结果
})
.then(orders => {
console.log('订单已获取:', orders);
return fetchProduct(orders[0]); // 取第一个订单查商品
})
.then(product => {
console.log('商品已获取:', product);
})
.catch(err => console.error('任一环节失败:', err));
每一步都明确依赖上一步输出,逻辑线性清晰,错误只需一个 catch 统一处理。
注意:避免在 then 中直接调用不返回 Promise 的函数
如果某步操作是同步的,或忘记 return,链会“断开”——后续 then 会立即执行,且接收到 undefined:
.then(user => {
console.log(user);
fetchOrders(user); // 缺少 return!
})
.then(orders => console.log(orders)); // 这里 orders 是 undefined
正确写法必须显式 return:
.then(user => {
console.log(user);
return fetchOrders(user); // 关键!
})
进阶:用 async/await 让串行更直观(本质仍是 Promise 链)
async 函数内部的 await 会暂停执行,直到 Promise 完成,并解包其值。它底层仍基于 Promise 链,但语法更接近同步代码:
try {
const user = await fetchUser(userId);
console.log('用户已获取:', user);
const orders = await fetchOrders(user);
console.log('订单已获取:', orders);
const product = await fetchProduct(orders[0]);
console.log('商品已获取:', product);
return { user, orders, product };
} catch (err) {
console.error('加载失败:', err);
}
}
它比纯 Promise 链更易读,但执行模型和错误传播规则完全一致。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










