事件循环

事件循环在 ES6 规范 中并没有的提及。JavaScript 本身只有任务和任务队列的概念。更复杂的事件循环的概念分别定义在 NodeJS 和 HTML5 规范中。因为此系列是讲的前端,所以在这里我将会阐述后者。

事件循环被称为一个循环,是有一个原因的。它无限循环并寻找新任务来执行。该循环的单次遍历叫做一个 tick。在tick 期间执行的代码叫一个任务(task)。

  1. while (eventLoop.waitForTask()) {
  2. eventLoop.processNextTask()
  3. }

任务是指可以在循环中安排其他任务的同步代码片段。调度新任务的一种简单的编程方法是 setTimeout(taskFn)

然而,任务可能来自其它几种来源,比如用户事件,网络请求或者 DOM 操作。

事件循环 - 图1