js执行机制

https://juejin.im/post/6844903512845860872  如有帮助,请感谢掘金作者!!!

  • 同步和异步任务分别进入不同的执行场所,同步的进入主线程,异步的进入Event Table并注册函数。
  • 当指定的事情完成时,Event Table会将这个函数移入Event Queue。
  • 主线程内的任务执行完毕为空,会去Event Queue读取对应的函数,进入主线程执行。
  • 上述过程会不断重复,也就是常说的Event Loop(事件循环)。

那怎么知道主线程执行栈为空?js引擎存在monitoring process进程,会持续不断的检查主线程执行栈是否为空,一旦为空,就会去Event Queue那里检查是否有等待被调用的函数。

异步任务有两种类型:宏任务(macrotask)和微任务(microtask)。

macro-task(宏任务)
  • setTimeout
  • setInterval
  • setImmediate
  • MessageChannel
  • requestAnimationFrame
  • I/O
  • UI交互事件
micro-task(微任务)
  • Promise
  • MutationObserver
  • Object.observe
  • process.nextTick
js执行机制关键理解 *把下面的解释理解清楚,再知道什么是宏任务、什么是微任务,js执行机制就彻底明白了*
js执行机制关键理解事件循环的顺序,决定js代码的执行顺序。
进入整体代码(宏任务)后,开始第一次循环。
接着执行所有的微任务。
然后再次从宏任务开始,找到其中一个任务队列执行完毕,再执行所有的微任务。
 
 
原文地址:https://www.cnblogs.com/zhenjianyu/p/12965077.html