JavaScript 异步编程全指南:从回调到 Async/Await

理解浏览器与 Node.js 的事件循环是写好异步代码的第一步。核心在于任务队列与微任务队列的调度。

事件循环与任务队列

// 宏任务与微任务示例
console.log('A');
setTimeout(() => console.log('B - macro'), 0);
Promise.resolve().then(() => console.log('C - micro'));
console.log('D');
// 输出:A D C - micro B - macro

Promise 关键语义

async/await 最佳实践

async function fetchJSON(url) {
  const res = await fetch(url);
  if (!res.ok) throw new Error('Request failed');
  return res.json();
}

async function main() {
  try {
    const data = await fetchJSON('/api');
    console.log(data);
  } catch (e) {
    console.error(e);
  }
}
main();

避免在循环中串行 await;可用 Promise.all 并行化独立请求。