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/

  • 相关阅读:
    centOS7 查看防火墙状态 开放端口
    PHP之Trait详解 转
    ps 树形显示
    composer 打印美化
    第一章 Java Web应用开发技术
    团队博客20
    团队博客19
    团队博客18
    团队博客17
    团队博客16
  • 原文地址:https://www.cnblogs.com/mengff/p/9224334.html
Copyright © 2011-2022 走看看