在现代 JavaScript 开发中,async/await 是处理异步操作的优雅方式。它让异步代码更像同步代码,显著提升可读性与可维护性。

📌 基本概念

async 用于声明一个函数是异步的,await 用于等待一个 Promise 的结果。
例如:

async function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
}

💡 了解更多 Promise 基础知识,请访问 /zh/course/tutorials/javascript/promise

💻 语法结构

  • async 关键字修饰函数,返回值为 Promise
  • await 只能在 async 函数内部使用
  • 语法糖本质是 Promise.then() 链式调用

📝 示例代码

async function example() {
  try {
    const result = await someAsyncFunction();
    console.log(result);
  } catch (error) {
    console.error(error);
  }
}

🌐 使用场景

  1. 网络请求 - 如 fetch API 或 axios
  2. 文件操作 - 读写异步文件系统
  3. 数据库查询 - 使用 MongoDB 或 MySQL 的异步驱动
  4. 定时任务 - 结合 setTimeout 实现延迟逻辑

⚠️ 优缺点对比

优点 缺点
代码结构清晰 无法直接使用 awaitif/else
异常处理简单 需要配合 try/catch 使用
避免回调地狱 不支持旧版浏览器(需 Babel 转译)

📝 最佳实践

  1. 始终使用 try/catch 捕获异常
  2. 避免在 await 后直接返回原始值
  3. 合理使用 Promise.all 并行处理多个异步任务
  4. 保持函数粒度细小,便于错误追踪
async_await_flowchart

📚 想深入理解异步编程模型?可参考 /zh/course/concepts/async-programming 获取更全面的解析。