then用于注册fulfilled回调,接收resolve值并返回新Promise以支持链式调用;推荐用catch而非then第二参数处理错误;回调总在微任务队列异步执行。

Promise 的 then 方法用于注册成功状态(fulfilled)的回调函数,它接收一个参数:处理 resolved 值的函数。
基本用法:接收 resolved 值
当 Promise 成功完成(调用 resolve(value)),then 中传入的第一个函数会被执行,并接收到该 value:
- 语法:
promise.then(onFulfilled) -
onFulfilled是一个函数,它的参数就是 Promise resolve 时传递的值 - 例如:
Promise.resolve(42).then(x => console.log(x))会输出42
链式调用:返回新 Promise
then 总是返回一个新的 Promise,这使得可以连续调用多个 then:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 如果
onFulfilled返回一个普通值(如字符串、数字),新 Promise 会以该值 fulfilled - 如果返回另一个 Promise,新 Promise 的状态和结果将由这个返回的 Promise 决定
- 例如:
fetch('/api/data').then(res => res.json()).then(data => console.log(data))
错误处理建议:不要只用 then 处理失败
then 可以接收第二个参数处理 rejected 状态,但更推荐用 catch:
立即学习“Java免费学习笔记(深入)”;
-
then(onFulfilled, onRejected)能捕获当前 Promise 的 rejection,但无法捕获自身回调中抛出的错误 -
catch等价于then(null, onRejected),且能捕获前面任意then中抛出的异常 - 推荐写法:
promise.then(handleSuccess).catch(handleError)
注意点:回调异步执行,不受当前执行栈影响
即使 Promise 已经处于 fulfilled 状态,then 回调也会被放入微任务队列,等同步代码执行完再运行:
- 这意味着
then回调不会立即执行,哪怕 Promise 是同步 resolve 的 - 这是 Promise 规范要求,保证行为一致,避免竞态问题
- 例如:
const p = Promise.resolve(); p.then(() => console.log('after')); console.log('now');输出顺序是now→after

















