美文网首页
微任务 宏任务

微任务 宏任务

作者: vivianXIa | 来源:发表于2021-02-19 22:18 被阅读0次
  • 微任务Microtask/Task 一次执行一个,一个执行完后检测
    当前(此次事件循环中)宏任务执行完,在下一个宏任务开始之前需要执行的任务,可以理解为回调事件。

可以理解是在当前 task 执行结束后立即执行的任务。也就是说,在当前task任务后,下一个task之前,在渲染之前
所以它的响应速度相比setTimeout(setTimeout是task)会更快,因为无需等渲染。也就是说,在某一个macrotask执行完后,就会将在它执行期间产生的所有microtask都执行完毕(在渲染前)。


image.png
  • 宏任务Macrotask 先进先出
    浏览器为了能够使得JS内部(macro)task与DOM任务能够有序的执行,会在一个(macro)task执行结束后,在下一个(macro)task 执行开始前,对页面进行重新渲染,流程如下:
    (macro)task->渲染->(macro)task->...

Microtasks和Macrotasks是异步任务的一种类型,Microtasks的优先级要高于Macrotasks

Microtask
- process.nextTick
- promise.then
- Object.observe (废弃)
- MutationObserver

Macrotask
- setTimeout
- setImmediate
- setInterval
- I/O
- UI 渲染
  • 运行机制
  1. 在执行栈中执行一个宏任务。
  2. 执行过程中遇到微任务,将微任务添加到微任务队列中。
  3. 当前宏任务执行完毕,立即执行微任务队列中的任务。
  4. 当前微任务队列中的任务执行完毕,检查渲染,GUI线程接管渲染。
  5. 渲染完毕后,js线程接管,开启下一次事件循环,执行下一次宏任务(事件队列中取)。

PS

event loop

JS主线程不断的循环往复的从任务队列中读取任务,执行任务,这中运行机制称为事件循环(event loop)。

  • 注意:
    每一个 event loop 都有一个 microtask queue
    每个 event loop 会有一个或多个macrotaks queue ( 也可以称为task queue )
    一个任务 task 可以放入 macrotask queue 也可以放入 microtask queue中
    每一次event loop,会首先执行 microtask queue, 执行完成后,会提取 macrotask queue 的一个任务加入 microtask queue, 接着继续执行microtask queue,依次执行下去直至所有任务执行结束。

相关文章

  • 宏任务、微任务

  • 宏任务 微任务

    宏任务 1.事件绑定 2.定时器 3.ajax/跨域中的异步(http请求异步) 微任务 1.Promise不是n...

  • 宏任务&微任务

    宏任务 我们可以将每次执行栈执行的代码当做是一个宏任务(包括每次从事件队列中获取一个事件回调并放到执行栈中执行) ...

  • 宏任务、微任务

    https://juejin.cn/post/6844903999506923528[https://juejin...

  • 微任务 宏任务

    微任务Microtask/Task 一次执行一个,一个执行完后检测当前(此次事件循环中)宏任务执行完,在下一个宏任...

  • 宏任务 微任务

    https://blog.csdn.net/zxc024000/article/details/76760966?...

  • 微任务宏任务

    宏任务:整段script代码(可以理解为外层的同步代码),settimeout,setInterval,ajax请...

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

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

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

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

  • 宏任务和微任务

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

网友评论

      本文标题:微任务 宏任务

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