zoukankan      html  css  js  c++  java
  • 婷婷震惊!你不是我之前认识的“宏任务”

    今天看某vue中nextTick的某篇博客时,其中经常提到事件循环机制,之前面试也经常被问到,所以点进了该niubility博主解释循环机制的博客。原来。。。。

    宏任务并不是同步任务啊!!!之前一直理解错了。

    在事件循环机制中,首先在调用栈中执行主线程上的所有同步任务。此时web API会对异步任务进行操作,将处理后的回调函数放到任务队列中。然鹅!会根据任务类型,放入macrotask Queue(宏任务队列)或microtask(微任务队列)中。对于宏任务队列中的每一个任务,都在不同的事件循环中进行,而对于微任务队列中的所有任务,都在一次时间循环中进行。

    也就是说,调用栈清空后,主线程查询微任务队列,执行清空;主线程再查询宏任务队列,取出队首任务进行执行,此时产生的微任务又放入微任务队列中。执行完后,再次查询微任务队列并清空,如此循环。。。

    再总结下宏任务和微任务都有哪些:

    宏任务:

    在浏览器和node中都存在的:I/O、setTimeout、setInterval

    浏览器中独有:requestAnimationFrame

    node中独有:setImmediate

    微任务:

    在浏览器和node中都存在的:promise.then、catch、finally

    浏览器中独有:MutationObserver

    node中独有:process.nextTick

    --------------------------------------------------------------------------介是一条分割线(看得出来吧!)-------------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    云存储研发工程师(40-50万)
    数据分析师(50-70万)
    云计算-资深java研发
    云计算 -- 资深python开发
    公众号”IT高薪猎头“
    51内核mcu实现printf的一种方法
    一种基于蓝牙BLE无线控制的灯光系统的解决方案
    Ecx后台增加新菜单+新数据表+新bundle完整过程
    Ecx 生成swagger文档
    ecshopx-manage管理后台本地编译设置本地API
  • 原文地址:https://www.cnblogs.com/ashen1999/p/12945954.html
Copyright © 2011-2022 走看看