当前位置: 首页 > news >正文

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

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.dtcms.com/a/10116.html

相关文章:

  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-39-highlight() 方法之追踪定位
  • Redis 事务
  • LVGL圆弧、线条、图片、色环、按钮矩阵、文本区域、键盘部件
  • GeoScene产品学习视频收集
  • python系列教程224——导入只发生一次
  • 【python将字符串按‘/‘和‘\‘分割开】
  • 【DevOps】深入理解 Nginx Location 块:配置示例与应用场景详解
  • k8s node NotReady后会发生什么?
  • 【MySQL】表的增删查改
  • 探索最新潮流:AI配音技术的崛起
  • 7个常见的SQL慢查询问题及其解决方法
  • 【数据库基础】基本认识数据库--入门引导
  • 用Dockerfile和Shell脚本来部署一个Go项目
  • 15:00面试,15:08出来,面试问的有点变态。。。。
  • 《王者荣耀》4月狂揽2.34亿美元 单日流水1亿美元 全球销量第二
  • 新一代开源爬虫平台:SpiderFlow
  • conda activate 报错:conda: error: argument COMMAND: invalid choice: ‘ctivate‘解决
  • JDK、JRE、编译指令和垃圾回收机制详解
  • Linux 查询开机时间
  • ubuntu手动替换源后,更新源时提示“仓库.... jammy Release“ 没有Release文件
  • 《QT实用小工具·六十四》QT实现仿Windows消息通知控件可交互
  • CentOS7安装Redis
  • C语言游戏实战(12):植物大战僵尸(坤版)
  • 深度学习中特征(tensor)维度转换
  • 数据链路层简单介绍
  • 阿里云数据库 SelectDB 版全面商业化,开启现代化实时数据仓库的全新篇章
  • 向郭老师学习研发项目管理
  • 赶紧收藏!2024 年最常见 20道 Redis面试题(三)
  • 文件搜索相关命令
  • 5.23小结