JS 里的 async & await 语法糖

三葉Leaves Author

应当在学完 Promise 实现异步编程 后才能理解此语法糖的优势。

先来看看两个关键字的作用:

基本概念

async:声明一个异步函数

async 关键字用于函数声明,它表示这个函数内部可能会有异步操作。声明的函数会返回一个 Promise。
async 函数有两大特点:

  • 如果函数代码中 return 了一个非 Promise 的值(比如一个数字或字符串),这个值会被自动包装在一个 resolvedPromise 中。
  • 如果函数 throw 了一个错误,它会返回一个 rejectedPromise

await:等待一个 Promise

await 关键字只能在 async 函数内部使用。它的作用是“暂停”async 函数的执行,等待它后面的 Promise 完成(settle)。

  1. 如果 Promise 变成 resolved(成功),await 会返回 Promise 的结果值。
  2. 如果 Promise 变成 rejected(失败),await 会抛出这个错误,就像 throw 语句一样。

错误处理

不同于 promise 里用 .catch(),对于 async/awaittry...catch 是最标准、最推荐的错误处理方式。它能捕获 await 期间任何 Promise 的 rejection 以及其他同步代码的错误。

1
2
3
4
5
6
7
8
9
10
11
12
async function getData() {
try {
// 你的 "开心路径" (happy path) 代码
const user = await fetchUser();
const posts = await fetchPosts(user.id);
console.log(posts);
} catch (err) {
// 所有错误都会在这里被捕获
console.error('操作失败:', err);
// 可以在这里做一些UI提示、日志上报等
}
}
  • 标题: JS 里的 async & await 语法糖
  • 作者: 三葉Leaves
  • 创建于 : 2025-06-17 00:00:00
  • 更新于 : 2025-07-10 13:40:50
  • 链接: https://blog.oksanye.com/61d52c824930/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论