事件循环

让我们来看看介绍一章中提到的代码片段:

setTimeout(function() {
  console.log('1');
}, 0);
console.log('2');

当你调用setTimeout方法时,它会被推送到一个所谓的事件队列中,然后console.log('2') 会被立即调用。当console.log('2')调用结束后,堆栈就空了,此时JavaScript的就会转移到队列上,并执行队列中的方法。这种控制流机制被称为事件循环事件循环负责查找堆栈和队列上的内容,并调度它们执行的顺序。下图中,堆栈中有3个任务将要被执行,它们一旦执行完毕,队列中的2个任务就会被抓取到堆栈中执行:

JavaScript 事件循环

现在,我们描述了一个非常简化的事件循环模型,显然,实际情况会比它复杂的多;但是,从本质上说,事件循环就是负责监听即将被执行的任务的。

用户头像
登录后发表评论