解释 JavaScript 事件循环

理解 JavaScript 事件循环机制

问题

解释 JavaScript 中事件循环是如何工作的。

答案

事件循环是一种机制,它使 JavaScript 尽管是单线程的,也能执行非阻塞操作。

组成部分

  1. 调用栈(Call Stack) - 执行同步代码
  2. Web APIs - 处理异步操作(setTimeout、fetch 等)
  3. 回调队列(宏任务队列) - 存储来自 Web APIs 的回调
  4. 微任务队列 - 存储 Promise 回调(优先级更高)

执行顺序

console.log('1'); // 同步

setTimeout(() => {
  console.log('2'); // 宏任务
}, 0);

Promise.resolve().then(() => {
  console.log('3'); // 微任务
});

console.log('4'); // 同步

// 输出: 1, 4, 3, 2

关键点

  • 微任务(Promise)在宏任务(setTimeout)之前执行
  • 事件循环持续检查调用栈是否为空
  • 理解这一点对异步编程至关重要