JS事件循环机制(event loop)之宏任务、微任务

embedded/2024/9/23 14:26:44/

js代码在执行的时候,会先执行同步代码,遇到异步宏任务则将异步宏任务放入宏任务队列中,遇到异步微任务则将异步微任务放入微任务队列中,当所有同步代码执行完毕后,再将异步微任务从队列中调入主线程执行,微任务执行完毕后,再将异步宏任务从队列中调入主线程执行,一直循环至所有的任务执行完毕(完成一次事件循环EventLoop)。

宏任务:整体代码script、setTimeout、setInterval、setImmediate、i/o操作(输入输出,比如读取文件操作、网络请求)、ui render(dom渲染,即更改代码重新渲染dom的过程)、异步ajax等

微任务:Promise(then、catch、finally)、async/await、process.nextTick、Object.observe(⽤来实时监测js中对象的变化)、 MutationObserver(监听DOM树的变化)

总结一下:

  • 宏任务按顺序执行,且浏览器在每个宏任务之间渲染页面
  • 所有微任务也按顺序执行,且在以下场景会立即执行所有微任务

    • 每个回调之后且js执行栈中为空。
    • 每个宏任务结束后。

http://www.ppmy.cn/embedded/43773.html

相关文章

Shell的条件语句

一 条件测试 1.1文件测试与整数测试 1.2字符串测试与逻辑测试 二 If语句 2.1If单分支语句 2.2If双分支语句 2.3If多分支语句 三 Case分支语句 四 总结 一 条件测试操作 1.1文件测试 要使shell脚本程序具备一定的"智能",面临的第一个问…

SQL生成自然数,日历序列 浅析

01.sqlserver版本 使用sqlserver将数据复制n条 selectt.indx,t.name,tmp.vlue from (values(1,苹果) ) as t(indx, name) ,(select[number] as vluefrom master.dbo.spt_valueswhere [type] pand [number] between 1 and 10 ) as tmpspt_values是什么 spt_values是SQL Se…

学习笔记——交通安全分析03

目录 前言 当天学习笔记整理 绪论 交通行为、心理与安全 结束语 前言 #随着上一轮SPSS学习完成之后,本人又开始了新教材《交通安全分析》的学习 #整理过程不易,喜欢UP就点个免费的关注趴 当天学习笔记整理 绪论 针对道路设施安全,我…

以太坊钱包

以太坊钱包是你通往以太坊系统的门户。它拥有你的密钥,并且可以代表你创建和广播交易。选择一个以太坊钱包可能很困难,因为有很多不同功能和设计选择。有些更适合初学者,有些更适合专家。即使你现在选择一个你喜欢的,你可能会决定…

初中地理的中考知识点 中考刷题

初中地理的中考知识点 小程序刷题,推荐用一叶兰 一,地球和地图 1、地球的形状是一个两极略扁,赤道略鼓的不规则的球体。地球的平均半径长是6371千米,赤道长约为4万千米。表面积约为5.1亿平方千米。 2、地球的自转所围绕的假想…

MATLAB分类与判别模型算法:基于Fisher算法的分类程序【含Matlab源码 MX_002期】

算法思路介绍: 费舍尔线性判别分析(Fishers Linear Discriminant Analysis,简称 LDA),用于将两个类别的数据点进行二分类。以下是代码的整体思路: 生成数据: 使用 randn 函数生成随机数&#x…

AT_abc343_c [ABC343C] 343 题解

题目传送门 解题思路 这道题目既然让我们求不超过 n n n 的最大的回文完全立方数&#xff0c;那我们就可以先用 cbrt 函数求出 n n n 的立方根&#xff0c;然后再挨个判断他们的立方数是否为回文数即可。 CODE: #include <bits/stdc.h> using namespace std; int m…

vue中引入js脚本块或者js文件 js函数 js方法

一、vue中&#xff0c;使用js函数的方法 在vue文件中&#xff0c;如果想要在组件里&#xff0c;通过事件触发&#xff0c;调用到函数&#xff0c;这个函数需要放在特定的位置&#xff0c;如下&#xff1a; <script> export default {methods: {t1(){},t2(){},t3(){}} }…