事件循环
什么是事件循环
事件循环,是程序内部的一种结构,其在初始事件之后控制和分派事件。初始事件可以是任何东西。
在轮询设备之后,事件循环将根据编程分派一个事件,该事件产生所需的效果。这称为循环,不是因为事件循环并持续发生,而是因为循环为事件做准备,检查事件,发送一个事件并再次重复该过程。
而在实际中,事件循环是编码文档的中心逻辑,实以常被称为主循环。
js中的事件循环
js是一门单线程语言,故而如果要在js中实现并发,只能借助基于事件循环的并发模型实现。
js事件循环的组成以及执行
如同所示:js中事件循环有如下几个主要构成部分:主线程、函数执行的执行栈、宏任务队列、微任务队列。
在js的任务执行期间,如果为同步调用,则将同步函数的上下文压入执行栈中,如果同步函数内部存在另一个同步函数则同步压入执行栈中。
而在该执行之前会判断宏任务队列中是否存在可执行的任务,若存在,则执行可执行的第一个任务。
而在执行栈将任务执行完毕,清空执行栈后,若遇到微任务消息队列的执行通知,则执行微任务队列中所有可执行的任务。