Macro task:setTimeout,setTimeInterval
Micro Task: promise ,process.nextTick
事件队列
各种线程
浏览器是多线程的,js是单线程的,浏览器至少包含三个常驻线程:
js引擎线程:基于事件驱动单线程执行
GUI渲染线程:负责渲染浏览器界面。但是js引擎线程和GUI渲染线程是互斥的,当js引擎线程进行时,GUI渲染线程会暂停,直到js引擎线程结束才继续,这也就是js阻塞
事件触发线程:当事件被触发后,会把事件添加到任务队列的最尾端,等待js引擎处理执行
本文深入探讨了浏览器中的多线程模型,重点讲解了JavaScript的单线程执行环境以及事件循环(Macrotask与Microtask)的工作原理。同时,解释了GUI渲染线程与JS引擎线程之间的互斥关系,以及事件触发线程如何协同处理任务队列。理解这些概念对于优化JavaScript性能和避免阻塞UI至关重要。
1097

被折叠的 条评论
为什么被折叠?



