Macro task:setTimeout,setTimeInterval
Micro Task: promise ,process.nextTick
事件队列
各种线程
浏览器是多线程的,js是单线程的,浏览器至少包含三个常驻线程:
js引擎线程:基于事件驱动单线程执行
GUI渲染线程:负责渲染浏览器界面。但是js引擎线程和GUI渲染线程是互斥的,当js引擎线程进行时,GUI渲染线程会暂停,直到js引擎线程结束才继续,这也就是js阻塞
事件触发线程:当事件被触发后,会把事件添加到任务队列的最尾端,等待js引擎处理执行