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代码的执行顺序。
    进入整体代码(宏任务)后,开始第一次循环。
    接着执行所有的微任务。
    然后再次从宏任务开始,找到其中一个任务队列执行完毕,再执行所有的微任务。
     
     
  • 相关阅读:
    php解析word,获得文档中的图片
    小程序 图表 antv f2 的使用
    eslint配置大全
    node 操作word excel
    vue-element-admin
    python中字符串前的r什么意思
    python3 三种字符串(无前缀,前缀u,前缀b)与encode()
    Markdown语法
    Python3 字符串前面加u,r,b的含义
    Python os.walk()
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/12965077.html
Copyright © 2011-2022 走看看