zoukankan      html  css  js  c++  java
  • 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代码的执行顺序。
    进入整体代码(宏任务)后,开始第一次循环。
    接着执行所有的微任务。
    然后再次从宏任务开始,找到其中一个任务队列执行完毕,再执行所有的微任务。
     
     
  • 相关阅读:
    oracle 监听 添加ip
    重装系统windows
    oracle user pwd
    mybatis
    sum行列合计
    IIS8.5 运行WCF
    exp自动备份在bat中不执行
    oem 重建
    yum install oracle-validated
    MSHflexgrid控件删除选中行
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/12965077.html
Copyright © 2011-2022 走看看