Skip to the content.

事件循环的概念

事件循环的概念很简单,简而言之就是:js引擎等待任务进入,执行这些任务,然后等待下一个任务进入。这是一个循环往复的过程,所以叫做事件循环。

js引擎在大部分时候可能啥也不干,只有js script、handle(句柄)、事件被激活时它才会开始运行,这些东西就被称之为任务。

一些典型的任务包括:

如果当js引擎繁忙时又源源不断的有任务进来,这个时候这些任务会被排成一个队列(宏任务队列)

需要注意的两点是:

  1. 渲染js引擎执行任务不会同时进行,对于DOM的修改会在任务完成后进行重绘
  2. 当一个任务执行时间过长,浏览器不会执行其他任务,比如说处理用户的事件监听。所以在一段时间后任务依然没有处理完的话,浏览器会弹出一个警告:页面没有响应,请关闭这个页面。当做一些很复杂的计算,或者一个代码错误导致了一个无限循环,就会引起这种情况的发生。