在现代 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
关键字修饰函数,返回值为 Promiseawait
只能在async
函数内部使用- 语法糖本质是
Promise.then()
链式调用
📝 示例代码
async function example() {
try {
const result = await someAsyncFunction();
console.log(result);
} catch (error) {
console.error(error);
}
}
🌐 使用场景
- 网络请求 - 如 fetch API 或 axios
- 文件操作 - 读写异步文件系统
- 数据库查询 - 使用 MongoDB 或 MySQL 的异步驱动
- 定时任务 - 结合
setTimeout
实现延迟逻辑
⚠️ 优缺点对比
优点 | 缺点 |
---|---|
代码结构清晰 | 无法直接使用 await 在 if/else 中 |
异常处理简单 | 需要配合 try/catch 使用 |
避免回调地狱 | 不支持旧版浏览器(需 Babel 转译) |
📝 最佳实践
- 始终使用
try/catch
捕获异常 - 避免在
await
后直接返回原始值 - 合理使用
Promise.all
并行处理多个异步任务 - 保持函数粒度细小,便于错误追踪
📚 想深入理解异步编程模型?可参考 /zh/course/concepts/async-programming 获取更全面的解析。