什么是异步编程?
异步编程是 JavaScript 处理非阻塞操作的核心机制,常用于:
- 网络请求(如 fetch、XMLHttpRequest)
- 定时任务(setTimeout、setInterval)
- 文件读写(Node.js 中的 fs 模块)
- 用户交互(如 DOM 事件)
📌 通过异步编程,JavaScript 可避免因长时间等待而冻结页面。
常见异步实现方式
1. 回调函数
最原始的异步模式,但容易引发回调地狱(Callback Hell)
fetch("https://api.example.com/data")
.then(response => response.json())
.then(data => console.log(data));
2. Promise
现代异步编程基石,支持链式调用和错误处理
async function fetchData() {
try {
const response = await fetch("https://api.example.com/data");
const data = await response.json();
return data;
} catch (error) {
console.error("请求失败:", error);
}
}
3. async/await
基于 Promise 的语法糖,使异步代码更接近同步写法
const result = await fetchData();
console.log("获取到数据:", result);
实践场景案例
📡 网络请求优化
使用 async/await
简化复杂 API 调用:
async function getUserData(userId) {
const user = await fetchUser(userId);
const posts = await fetchPosts(user.id);
return { user, posts };
}
⏱️ 定时任务管理
async function delayedExecution() {
await sleep(2000); // 模拟异步延迟
console.log("2秒后执行");
}
📁 文件操作示例
const fs = require("fs").promises;
async function readFileAsync(filename) {
const data = await fs.readFile(filename, "utf-8");
return data;
}
扩展阅读
想要深入了解 Promise 的高级用法,可以查看:
JavaScript Promise 深入解析