让我们来看看介绍一章中提到的代码片段:
setTimeout(function() {
console.log('1');
}, 0);
console.log('2');
当你调用setTimeout
方法时,它会被推送到一个所谓的事件队列
中,然后console.log('2')
会被立即调用。当console.log('2')
调用结束后,堆栈就空了,此时JavaScript的就会转移到队列上,并执行队列中的方法。这种控制流机制被称为事件循环
。事件循环
负责查找堆栈和队列上的内容,并调度它们执行的顺序。下图中,堆栈中有3个任务将要被执行,它们一旦执行完毕,队列中的2个任务就会被抓取到堆栈中执行:
现在,我们描述了一个非常简化的事件循环模型,显然,实际情况会比它复杂的多;但是,从本质上说,事件循环就是负责监听即将被执行的任务的。