JavaScript 的事件循环是 JavaScript 运行时环境的核心机制之一。它允许 JavaScript 在单线程中处理多个任务,使得非阻塞操作(如 I/O 操作)能够顺利进行。

事件循环的组成

事件循环主要由以下三个部分组成:

  1. 调用栈(Call Stack):JavaScript 代码执行的地方,按照代码的顺序执行。
  2. 任务队列(Task Queue):存放异步任务的地方,如定时器、I/O 操作等。
  3. 事件循环(Event Loop):不断检查调用栈和任务队列,将任务从任务队列中取出放入调用栈执行。

事件循环的流程

  1. 检查调用栈是否为空:如果为空,则执行下一个任务。
  2. 执行调用栈中的任务:执行完一个任务后,检查是否有异步任务。
  3. 将异步任务放入任务队列:如果有异步任务,将其放入任务队列。
  4. 检查任务队列:如果任务队列不为空,则将任务从队列中取出放入调用栈执行。
  5. 重复步骤 1-4:直到调用栈和任务队列为空。

例子

以下是一个简单的例子,展示了事件循环的流程:

console.log('1');

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

console.log('3');

// 输出结果:1 3 2

在这个例子中,setTimeout 是一个异步任务,它在事件循环中等待一段时间后执行。因此,输出结果为 1 3 2

扩展阅读

想了解更多关于 JavaScript 事件循环的知识?可以阅读以下文章:

JavaScript 事件循环