想要理解浏览器的事件循环机制,首先的了解浏览器的本身
一,浏览器的多进程的实现方式,主要的进程有三个
1.浏览器进程(主要处理用户交互)2.网络进程(主要处理网络请求)
3.渲染进程(主要负责解析 html css js 等页面渲染)
注意:目前谷歌浏览器的 一个标签页是一个单独的进程
二,事件循环发生于渲染进程中的渲染主线程中
事件循环是异步的实现方式</br>
事件循环是异步的实现方式</br>
怎么理解这两句话。首先页面渲染的工作是在 渲染主线程中进行的,也就是所js是单线程的。既然是单线程的就会有以下问题:
1.比如js 运行到一半用户突然点击了某个按钮。那是继续执行剩下的js 还是 处理用户的交互?
2.不如js 中的 setTimeout 的计时一定准确吗?
带着这两个问题来看:
问题一:结论是继续执行剩下的代码 。 因为js 从浏览器的层源码了解。渲染主线程其实本身是一个死循环,每次循环都会成任务队列去取任务来进行处理。