浏览器的事件机制-Eventloop

2020-03-26  本文已影响0人  Doter

循环机制前,我们先要会区分:宏任务与微任务

宏任务Task与微任务Microtask

JS中的宏任务和微任务的区别和用法
宏任务Task与微任务Microtask都是异步任务。

宏任务一般是:包括<script>,setTimeout,setInterval、I/O、UI render, event事件的callback。
微任务主要是:Promise、Object.observe、MutationObserver。

关于宏任务与微任务Microtask的如何调度

建议直接参考该文章:
动图学 JavaScript 之:事件循环
简单描述就是:
首先有宏任务队列Tasks和空的微任务队列Microtasks

  1. 开始执行Tasks中的第一个宏任务
  2. 当某个task宏任务在执行过程中除了正常逻辑代码及调用栈,如果遇到宏任务则添加到Tasks,遇到微任务则添加到Microtasks.直到该任务结束。
  3. 接下来执行依次执行Microtasks中的微任务(即上面的宏任务产生了Microtasks),逻辑与执行宏任务一样。最终执行完该微任务队列后。
  4. 接着执行下一个task宏任务

ok,就是这么简单。


image.png

推荐阅读下方参考文章中英文原文,然后自己找到代码试例,查看其执行流程
参考文章:
Tasks, microtasks, queues and schedules(译文)
Tasks, microtasks, queues and schedules(原文)

上一篇 下一篇

猜你喜欢

热点阅读