zoukankan      html  css  js  c++  java
  • 宏任务和微任务

     1、我们执行 JS 代码的时候就是往执行栈中放入函数,当遇到异步的代码时,会被挂起并在需要执行的时候加入到 Task(有多种 Task) 队列中。一旦执行栈为空,Event Loop 就会从 Task 队列中拿出需要执行的代码并放入执行栈中执行,所以本质上来说 JS 中的异步也还是同步行为。

    2、微任务包括 process.nextTick ,promise.then ,MutationObserver (MutationObserver:原生api中用来监听node节点变化的一个类)。

    3、宏任务包括 script , setTimeout  ,setInterval ,setImmediate(该方法用来把一些需要长时间运行的操作放在一个回调函数里,在浏览器完成后面的其他语句后,就立刻执行这个回调函数) ,I/O ,UI rendering(执行完所有的micro-task任务后,再清空micro-task/宏任务,此时本轮循环结束,开始执行UI render) 。

    4、这里很多人会有个误区,认为微任务快于宏任务,其实是错误的。因为宏任务中包括了 script ,浏览器会先执行一个宏任务,接下来有异步代码的话才会先执行微任务。

  • 相关阅读:
    洛谷 P4707 重返现世
    多项式总结&多项式板子
    线性常系数齐次递推
    洛谷 P2791 幼儿园篮球题
    CF Gym 102028G Shortest Paths on Random Forests
    洛谷 P4705 玩游戏
    [NOI2018]冒泡排序
    PKUSC2019 改题记录
    PKUSC2019 没约记
    Codeforces Round #557 题解【更完了】
  • 原文地址:https://www.cnblogs.com/cnlg123/p/14807867.html
Copyright © 2011-2022 走看看