await 后接非 Promise 值会自动被 Promise.resolve() 包装为已 fulfilled 的 Promise,如 await 42 等价于 await Promise.resolve(42),确保统一等待逻辑;虽为同步值,仍触发一次微任务暂停。

await 后面接非 Promise 值(比如字符串、数字、对象、undefined 等)时,JavaScript 会自动用 Promise.resolve() 将其包装成一个已 fulfilled 的 Promise。
具体表现
例如:
-
await 42等价于await Promise.resolve(42),立刻返回42 -
await "hello"等价于await Promise.resolve("hello"),立刻返回"hello" -
await null或await undefined同样被转为对应 resolve 值的 Promise
为什么设计成这样
这种隐式转换让 await 的使用更灵活,无需每次手动包装。它统一了等待逻辑:无论右侧是原生 Promise 还是普通值,await 都能以相同方式处理——先确保是个 Promise,再等待其 settled 状态。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
注意点
这个包装是自动且不可跳过的。你无法阻止它发生,也不需要手动调用 Promise.resolve();但要清楚:哪怕写的是同步值,await 仍会让当前 async 函数暂停一次微任务,控制权交还事件循环后再继续执行下一行。
立即学习“Java免费学习笔记(深入)”;

















