什么是异步编程?

异步编程是 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 深入解析

async_programming
事件_循环