最快的方式理解事件循环机制

Posted 单身girl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最快的方式理解事件循环机制相关的知识,希望对你有一定的参考价值。

最快的方式理解事件循环机制# 一级标题
1、微任务 (microtask):优先级高,并且可以插队,不是先定义先执行。包括:promise 中的 then,observer,MutationObserver,setImmediate。
2、宏任务 (macrotask):优先级低,先定义的先执行。包括:ajax,setTimeout,setInterval,事件绑定,postMessage,MessageChannel(用于消息通讯)。
在这里插入图片描述

根据事件循环机制,梳理一下流程:

  1. 执行一个宏任务(首次执行的主代码块或者任务队列中的回调函数)
  2. 执行过程中如果遇到微任务,就将它添加到微任务的任务队列中
  3. 宏任务执行完毕后,立即执行当前微任务队列中的所有任务(依次执行)
  4. JS引擎线程挂起,GUI线程执行渲染
  5. GUI线程渲染完毕后挂起,JS引擎线程执行任务队列中的下一个宏任务
    说明:
  6. 当某个宏任务执行完后,会查看是否有微任务队列。
  7. 如果有,先执行微任务队列中的所有任务,
  8. 如果没有,会读取宏任务队列中排在最前的任务,执行宏任务的过程中,遇到微任务,依次加入微任务队列。
  9. 栈空后,再次读取微任务队列里的任务,依次类推。

以上是关于最快的方式理解事件循环机制的主要内容,如果未能解决你的问题,请参考以下文章

深入理解事件循环机制

深入理解JavaScript的事件循环(Event Loop)

《理解JS: 事件循环机制》

vue nextTick深入理解-vue性能优化DOM更新时机事件循环机制

深入理解JavaScript事件循环机制

对javascript EventLoop事件循环机制不一样的理解