zoukankan      html  css  js  c++  java
  • Event loop的macro task和micro task

    macrotask在一些文章中也被直接称为task。

    一个宿主环境只有一个事件循环,但可以有多个任务队列。宏任务队列(macro task)与微任务队列(micro task)就是其中之二。

    每次事件循环的时候,微任务优先级高于宏任务。

    宏任务:script(全局任务), setTimeout, setInterval, setImmediate, postMessage, MessageChannel, I/O, UI rendering.
    微任务:process.nextTick, Promise, Object.observer, MutationObserver.

    微任务总 process.nextTick > promise.then

    宏任务中,通常 setTimeout > setImmediate

    setImmediate(): 是被设计用来一旦当前阶段的任务执行完后执行。
    setTimeout(): 是让代码延迟执行。

    如果没有在一个I/O周期执行,那么其执行顺序是不确定的。
    如果在一个I/O周期执行,setImmediate总是优先于setTimeout执行。


    更多请查看Jake Archibald关于macroTask和microTask的说明
    https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/

  • 相关阅读:
    渗透测试-内网渗透笔记
    渗透测试-信息搜集笔记
    Mysql注入笔记
    XSS漏洞理解
    tomcat服务器配置及加固
    python3基础学习笔记
    http.sys远程代码执行漏洞(MS15-034)
    Map and Set(映射和集合)
    防抖 | 节流
    for循环中的闭包
  • 原文地址:https://www.cnblogs.com/mengff/p/9224334.html
Copyright © 2011-2022 走看看