事件循环是JavaScript运行时环境的核心概念之一,特别是在浏览器和Node.js中。它允许JavaScript在单线程中处理多个任务,通过非阻塞的方式提高程序性能。

基本概念

事件循环(Event Loop)是一种处理并发任务的机制。在JavaScript中,事件循环负责将代码、事件处理程序和定时器回调按顺序执行。

事件循环的三个阶段:

  1. 检查阶段(Check Phase):检查是否有已完成的宏任务(如整体代码块、定时器等)。
  2. 微任务阶段(Microtask Phase):执行所有微任务(如Promise的回调)。
  3. 渲染阶段(Rendering Phase):执行UI的渲染。
  4. 检查阶段(Check Phase):重复以上步骤。

示例

以下是一个简单的事件循环示例:

console.log('1');

setTimeout(() => {
  console.log('2');
}, 0);

new Promise((resolve) => {
  console.log('3');
  resolve();
}).then(() => {
  console.log('4');
});

console.log('5');

输出结果为:1 3 5 4 2

扩展阅读

如果你想要更深入地了解事件循环,可以阅读以下教程:

图片

事件循环的流程可以想象成一条流水线,以下是流水线的示意图:

事件循环流程图