Event Loop 即事件循环, 是JavaScript或Node为解决单线程代码执行不阻塞主进程一种机制,也就是我们所说的异步原理
要了解事件循环机制首先要了解进程,线程,宏任务,微任务:
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
线程(thread)是操作系统能够进行运算调度的最小单位。一个进程中可以并发多个线程,每条线程并行执行不同的任务。
js宏任务:当前调用栈中执行的代码成为宏任务。
js微任务:当前宏任务执行完,在下一个宏任务开始之前需要执行的任务,可以理解为回调事件。
宏任务中的事件放在callback queue中,由事件触发线程维护;
微任务的事件放在微任务队列中,由js引擎线程维护。
事件循环机制:
当前任务在执行的过程中,一个script块(作为任务队列的第一个宏任务)开始执行,当同步任务执行完毕后会立刻检查所有微任务队列中的事件,微任务事件队列执行完毕之后,再去执行宏任务队列,一个宏任务执行完毕之后,检查微任务队列是否有任务,如果有就执行微任务,如果没有执行队列中的下一个宏任务,当前宏任务队列执行完成之后在执行下一个宏任务队列