async函数返回promise对象,可直接用.then()处理成功结果、.catch()捕获错误;内部return值自动包装为promise.resolve(),await解包后为普通值不可链.then()。

async 函数返回的是一个 Promise 对象,所以可以直接用 .then() 接收它的结果,就像处理普通 Promise 一样。
async 函数本质返回 Promise
即使函数内部写的是 return 123,async 函数也会自动把它包装成 Promise.resolve(123)。所以你不需要手动 return Promise,JavaScript 已经帮你做了。
- 如果 async 函数正常执行完,
.then()拿到的是return的值(无论原始类型还是对象) - 如果 async 函数中抛出错误(或 await 了一个被 reject 的 Promise),
.then()不会触发,而是走.catch()
基本用法示例
下面这个例子清楚展示了如何用 .then() 获取 async 函数的返回值:
async function fetchData() {
return "Hello World";
}
fetchData().then(value => {
console.log(value); // 输出:Hello World
});
注意 await 和 then 不要混用在同一调用链上
你不能在一个已经用 await 等待的地方再链式调用 .then() —— 因为 await 解包后得到的是普通值,不是 Promise。但如果你直接调用 async 函数(不加 await),它就还是 Promise,可以链 .then():
- ✅ 正确:
fetchData().then(...) - ❌ 错误:
const res = await fetchData(); res.then(...)(报错:res 是字符串,没有 .then 方法)
处理异步操作中的错误
用 .then() 只能拿到成功结果;失败必须配 .catch():
async function mightFail() {
throw new Error("Oops");
}
mightFail()
.then(console.log)
.catch(err => console.error(err.message)); // 输出:Oops
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











