摘要:
面试题 浏览器是如何渲染页面的? 当浏览器的网络线程收到 HTML 文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。 在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务,开启渲染流程。 整个渲染流程分为多个阶段,分别是: HTML 解析、样式计算、布局、分层、绘制、分块、光栅化 阅读全文
posted @ 2023-03-08 16:31
脆皮鸡
阅读(272)
评论(0)
推荐(0)
摘要:
事件循环⼜叫做消息循环,是浏览器渲染主线程的⼯作⽅式。 在 Chrome 的源码中,它开启⼀个不会结束的 for 循环,每次循环从消息队列中取出第⼀个任务执⾏,⽽其他线程只需要在合适的时候将任务加⼊到队列末尾即可。 过去把消息队列简单分为宏队列和微队列,这种说法⽬前已⽆法满⾜复杂的浏览器环境,取⽽代 阅读全文
posted @ 2023-03-08 13:33
脆皮鸡
阅读(28)
评论(0)
推荐(0)
摘要:
参考答案: 不⾏,因为: 计算机硬件没有原⼦钟,⽆法做到精确计时 操作系统的计时函数本身就有少量偏差,由于 JS 的计时器最终调⽤的是操作系统的函数,也就携带了这些偏差 按照 W3C 的标准,浏览器实现计时器时,如果嵌套层级超过 5 层,则会带有 4 毫秒的最少时间,这样在计时时间少于 4 毫秒时⼜ 阅读全文
posted @ 2023-03-08 13:33
脆皮鸡
阅读(70)
评论(0)
推荐(0)
摘要:
JS是⼀⻔单线程的语⾔,这是因为它运⾏在浏览器的渲染主线程中,⽽渲染主线程只有⼀个。 ⽽渲染主线程承担着诸多的⼯作,渲染⻚⾯、执⾏ JS 都在其中运⾏。如果使⽤同步的⽅式,就极有可能导致主线程产⽣阻塞,从⽽导致消息队列中的很多其他任务⽆法得到执⾏。 这样⼀来,⼀⽅⾯会导致繁忙的主线程⽩⽩的消耗时间, 阅读全文
posted @ 2023-03-08 13:31
脆皮鸡
阅读(29)
评论(0)
推荐(0)
摘要:
这里有段代码 function a() { console.log(1); Promise.resolve().then(function aFn() { console.log(2); }); } setTimeout(function fn2() { console.log(3); Promis 阅读全文
posted @ 2023-03-08 11:40
脆皮鸡
阅读(55)
评论(0)
推荐(0)

浙公网安备 33010602011771号