事件循环是指JS引擎用来执行代码和响应事件的机制,它是实现异步和非阻塞I/O的核心。JS在执行时会将所有任务分为同步任务和异步任务,同步任务会在调用栈中依次执行,异步任务进入Event Table并注册对应的回调函数,随后继续执行后续代码,当异步任务有相应事件触发时,会将回调函数加入到Event Queue中,等待Event Loop根据一定的规则将其取出执行。

事件循环的执行过程包括以下几个步骤:

1. 执行同步任务,将异步任务加入Event Table并注册回调函数。
2. 当调用栈为空时,事件循环开始执行异步任务。
3. Event Loop检查Event Queue中是否有待执行的回调函数,如果有则弹出一个执行,如果没有则等待。

4. 执行回调函数,将其作为同步任务加入调用栈中继续执行。

示例代码:

console.log(1);

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

console.log(3);

// 执行顺序:1 -> 3 -> 2