微任务与宏任务的区别

简介: 微任务与宏任务的区别


一. 什么是宏任务(MacroTask)


宏任务包括:setTimeout setInterval Ajax DOM事件,


宏任务是由宿主(浏览器、Node)发起的,宏任务,可以理解为每次执行栈执行的代码就是一个宏任务(包括每次从事件队列中获取一个事件回调并放到执行栈中执行).进程的切换肯定是宏任务,因为需要花费大量的资源


二. 什么是微任务(MicroTask)


微任务包括:Promise async/await 等…


微任务是由JS引擎发起的,微任务,可以理解是在当前 task 执行结束后立即执行的任务。也就是说,在当前task任务后,下一个task之前,在渲染之前。线程的切换是微任务,因为只需要在同一个进程中切换就可以了


三. 宏任务和微任务是怎么执行的?


执行顺序:主线程 >主线程上创建的微任务 > 主线程上创建的宏任务


在事件循环中,每进行一次循环操作称为 tick,每一次 tick 的任务处理模型是比较复杂的,但关键步骤如下:


1. 执行一个宏任务(栈中没有就从事件队列中获取)

 

2. 执行过程中如果遇到微任务,就将它添加到微任务的任务队列中

 

3. 宏任务执行完毕后,立即执行当前微任务队列中的所有微任务(依次执行)

 

4. 当前宏任务执行完毕,开始检查渲染,然后GUI线程接管渲染

 

5. 渲染完毕后,JS线程继续接管,开始下一个宏任务(从事件队列中获取)

相关文章
|
云安全 弹性计算 运维
BYOIP灵魂十问 | 详解阿里云自带公网IP上云
2020年6月11日,在阿里云“企业出海全球化网络新品发布会”上,阿里云洛神云网络宣布弹性公网IP产品全面升级,推出自带公网IP上云解决方案。本文通过十问十答方式详细解读。
BYOIP灵魂十问 | 详解阿里云自带公网IP上云
|
存储 机器学习/深度学习 算法
Python 图像处理实用指南:1~5
Python 图像处理实用指南:1~5
1849 0
|
存储 Ruby 内存技术
【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统
【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统
839 1
|
安全 Linux 数据安全/隐私保护
国内外四款强大的远控使用体验:ToDesk、向日葵、AnyDesk、Microsoft 远程桌面横向比较
国内外四款强大的远控使用体验:ToDesk、向日葵、AnyDesk、Microsoft 远程桌面横向比较
3313 0
|
Java
try、catch、finally、throw、throws 的用法,finally 块一定会执行吗?举反例说明。
Java异常处理核心关键字包括try、catch、finally、throw、throws。try捕获异常,catch处理异常,finally确保代码执行(通常用于资源释放),throw手动抛出异常,throws声明可能的异常类型。finally块在大多数情况下都会执行,但若JVM终止或线程被强制中断,则可能不执行。
948 5
|
8月前
|
弹性计算 人工智能 Linux
阿里云服务器使用指南:2026新手入门指南,一篇文章全搞定
2026阿里云新手指南:详解轻量应用服务器与ECS区别,手把手教你三步购买(含¥38/年秒杀技巧)、网页/终端远程登录、WordPress/OpenClaw一键部署,并附防火墙配置、密码修改等安全设置及常见问题排查方案。
1142 1
|
7月前
|
人工智能 安全 网络安全
Claude Code 全屏模式:终端界的“防抖 + 沉浸“双 buff
Claude Code 推出革命性“全屏模式”:非窗口最大化,而是接管终端备用缓冲区,实现输入框钉底、内容区独立滚动。零闪烁、内存稳、原生鼠标支持,大幅提升编码沉浸感与效率。(239字)
1038 1
|
JSON API 开发者
淘宝开放平台:获取商品销量数据的API接口详解
本文介绍如何通过淘宝开放平台API获取商品销量数据,涵盖注册应用、权限申请、签名认证及调用taobao.item.get接口等流程,强调权限获取与字段可用性关键点,提供Python示例代码,帮助开发者合法、高效地获取商品30天成交量等核心数据。
1163 0
|
消息中间件 缓存 前端开发
JS案例:实现一个简单的任务队列-TaskQueue
JS案例:实现一个简单的任务队列-TaskQueue
1137 0
JS案例:实现一个简单的任务队列-TaskQueue