美文网首页全栈笔记
宏任务和微任务

宏任务和微任务

作者: 小贤笔记 | 来源:发表于2020-10-16 09:08 被阅读0次

介绍这个之前, 建议先了解一下事件循环

宏任务 (Macrotask)

宏任务包含了解析 HTML、生成 DOM、执行主线程 JS 代码和其他事件如 页面加载、输入、网络事件、定时器事件等。从浏览器的角度,宏任务代表的是一些离散的独立的工作

比如: setTimeout, setInterval, setImmediate, requestAnimationFrame, I/O, UI rendering

微任务 (Microtask)

微任务则是为了完成一些更新应用程序状态的较小的任务,如处理 Promise 的回调和 DOM 的修改,以便让这些任务在浏览器重新渲染之前执行

微任务应该以异步的方式尽快执行, 所以它的开销比宏任务小, 并且可以在 UI 重新渲染之前执行, 避免了不必要的 UI 渲染

比如: process.nextTick, Promises, Object.observe, MutationObserver

运行机制

  • 执行一个宏任务 (栈中没有就从事件队列中获取)
  • 执行过程中如果遇到微任务, 就将它添加到微任务的任务队列中
  • 宏任务执行完毕后, 立即执行当前微任务队列中的所有微任务 (依次执行)
  • 当前宏任务执行完毕, 开始检查渲染, 然后GUI线程接管渲染
  • 渲染完毕后, JS线程继续接管, 开始下一个宏任务 (从事件队列中获取)

相关文章

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

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

  • 宏任务和微任务

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

  • 宏任务 和 微任务

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

  • 宏任务和微任务

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

  • 宏任务和微任务

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

  • # 宏任务和微任务

    首先说明 首先在JavaScript中,有同步代码和异步代码.这点很清晰. 代码的执行优先级顺序是,同步代码执行优...

  • 微任务和宏任务

    JS是单线程的,可以把这个线程叫做主线程,主线程中包含宏任务队列和微任务队列,宏任务所在的队列就叫宏任务队列,微任...

  • 宏任务和微任务

    所谓微任务和宏任务 宏任务::常见的定时器,用户交互事件等等。可以理解是每次执行栈执行的代码就是一个宏任务。(宏任...

  • 2018-08-15 微任务 宏任务 MicroTask Mac

    微任务和宏任务 微任务(Microtask)宏任务(Microtask)process.nextTickPromi...

  • 浏览器的事件机制-Eventloop

    循环机制前,我们先要会区分:宏任务与微任务 宏任务Task与微任务Microtask JS中的宏任务和微任务的区别...

网友评论

    本文标题:宏任务和微任务

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