美文网首页
宏任务和微任务和DOM渲染

宏任务和微任务和DOM渲染

作者: _hider | 来源:发表于2022-03-12 14:30 被阅读0次

1. GUI线程

GUI线程是浏览器线程之一,它的作用主要是以下几点:

  • 解析html文档生成DOM
  • CSS代码转换为CSSOM
  • 结合DOMCSSOM生成渲染树。
  • 生成布局layout
  • 将布局绘制paint在屏幕上。
屏幕刷新频率

GUI线程渲染的结果不会立刻呈现在屏幕上,等屏幕刷新时才会呈现出来。屏幕刷新频率一般60HZ,即16.6ms刷新一次屏幕。

2. JS事件循环与DOM渲染

DOM渲染是在GUI线程中处理的,在下次宏任务执行前,GUI渲染线程开始工作,对页面进行渲染。

事件循环.png
JS引擎和GUI线程是互斥的,因为JS引擎可能频繁修改DOM样式,等一轮事件循环完毕之后再统一执行GUI线程,这也是一种优化手段。来看一道题来加深理解:
new Promise((resolve) => {
  resolve();
}).then((res) => {
  console.log("微任务");
});
console.log("同步任务");
for (i = 0; i < 2000000000; i++) {};
const box = document.getElementById("box");
box.style.backgroundColor = "blue";
setTimeout(() => {
  console.log("宏任务");
}, 0);

以上代码的执行流程是:

  1. 先执行同步任务,输出同步任务。
  2. 等待2000000000次循环执行完毕。
  3. 输出微任务。
  4. idbox的元素变成蓝色。
  5. 输出宏任务。

相关文章

  • 宏任务和微任务和DOM渲染

    1. GUI线程 GUI线程是浏览器线程之一,它的作用主要是以下几点: 解析html文档生成DOM。 CSS代码转...

  • JS事件循环机制Event Loop

    执行顺序 微任务——DOM渲染——宏任务 微任务 Promise.thenObject.observeMutati...

  • 宏任务与微任务和Dom渲染的关系

    宏任务和微任务都讨论了好几年了,前端面试也考了这么多回了,各位客爷也一定对这方面知识有所了解,如果还是一知...

  • 宏任务与微任务

    宏任务:setTimeout和setInterval,Ajax,DOM事件微任务:Promise,async/aw...

  • 微任务和宏任务@小四@王云飞

    微任务和宏任务 微任务 和 宏任务 表示异步任务的两种分类。 微任务(microtask)和宏任务(macrota...

  • 前端宏任务、微任务、Dom 渲染的顺序

    1.浏览器包含多个进程 1.主进程协调控制其他子进程(创建、销毁) 2.第三方插件进程每种类型的插件对应一个进程,...

  • 宏任务和微任务

    [js 宏任务和微任务] .宏任务(macrotask )和微任务(microtask ) macrotask 和...

  • 宏任务 和 微任务

    宏任务: 当前调用栈执行的代码成为宏任务,(主代码块和定时器)也或者宿主环境提供的叫宏任务 这些任务包括: 渲染事...

  • 宏任务和微任务

    介绍这个之前, 建议先了解一下事件循环[https://www.jianshu.com/p/106867eee55...

  • 宏任务和微任务

    浏览器是多线程执行代码,渲染的。但是浏览器只给JS一个线程来执行,因此JS是单线程。因此代码都是同步执行的,但是J...

网友评论

      本文标题:宏任务和微任务和DOM渲染

      本文链接:https://www.haomeiwen.com/subject/iswccrtx.html