宏任务和微任务

简介: 宏任务和微任务

一,什么是宏任务什么是微任务?

宏任务(Macro Tasks)和微任务(Micro Tasks)是指在JavaScript中异步任务队列中执行的不同类型任务。

二,宏任务

宏任务(Macro Tasks)包括以下几种:

主代码块:JavaScript中的主线程代码。

setTimeout和setInterval:定时器任务。

I/O操作:例如文件读写、网络请求等。

UI渲染:浏览器需要重绘或者重新布局的任务。

三,微任务

微任务(Micro Tasks)包括以下几种:

Promise回调函数:Promise对象的处理程序(then、catch、finally)。

MutationObserver:监测DOM变化的任务。

process.nextTick(Node.js环境下):在当前"执行栈"结束后立即执行的任务。

四,哪些算是宏任务

用户交互事件:例如点击、滚动、输入等用户操作触发的事件。

setTimeout 和 setInterval:通过定时器触发的任务。

网络请求完成事件:例如 Ajax 请求完成时触发的事件。

文件读写操作:包括读取文件、写入文件等涉及到 I/O 操作的任务。

页面解析和渲染:包括 DOM 解析、CSS 解析、页面布局和绘制等与页面渲染相关的任务。

requestAnimationFrame:用于执行动画效果的任务。

五,哪些算是微任务

Promise 回调函数:Promise 对象的处理程序(.then、.catch、.finally)中的回调函数都是微任务。

MutationObserver:用于监测 DOM 变化的任务。

process.nextTick(在 Node.js 环境下):在当前执行栈结束后立即执行的任务。

queueMicrotask():用于将一个微任务添加到微任务队列中。

六,宏任务和微任务的执行顺序

在事件循环(Event Loop)中,当主线程空闲时,会从宏任务队列中选择一个任务进行执行。当一个宏任务执行完毕后,会检查是否有微任务队列,如果有,则将微任务队列中的所有任务依次执行完毕,然后再继续选择下一个宏任务执行。这样的过程循环进行,形成了事件循环。

总结来说,宏任务代表着较大粒度的任务,而微任务代表着较小粒度的任务。微任务通常在宏任务执行完毕后立即执行,因此微任务具有更高的优先级,可以在页面渲染前执行,从而提供更好的用户体验。

 

相关文章
|
6月前
|
安全 测试技术 API
电商API接口开发:基础架构搭建全攻略
本文详细解析了电商API接口从零搭建基础架构的全流程。首先通过需求分析明确业务功能与接口规范,选定数据格式(如JSON)及通信方式(如RESTful)。接着在架构设计阶段选择合适的技术栈、数据库方案,并引入API网关实现统一管理。开发实现部分涵盖认证授权、数据访问、日志记录与异常处理等核心功能。安全防护则强调数据加密、传输安全及速率限制策略。测试优化阶段包括单元测试、集成测试、性能与安全测试,确保接口稳定性。最后通过工具生成清晰的API文档并实施版本控制,为开发者提供便利。整体流程系统化、模块化,助力打造高效、安全的电商API接口。
|
8月前
|
存储 API 数据安全/隐私保护
使用宝塔搭建MinIO并且设置域名访问
本文介绍了如何使用宝塔面板搭建MinIO并设置域名访问的完整流程。首先通过宝塔面板安装Docker及MinIO,配置域名与端口,完成Web管理界面的部署。接着,创建存储桶、配置访问规则和API密钥,实现资源的安全管理。最后,通过反向代理设置API接口,测试文件上传功能,确保MinIO可用于图片和文件资源的存储。作者Harry技术还分享了相关开源项目,适合开发者快速上手。
1663 2
使用宝塔搭建MinIO并且设置域名访问
|
11月前
|
监控 物联网 大数据
应急物资智能仓储系统解决方案
凌讯应急物资智能仓储系统集成了物联网、云计算、大数据等技术,实现了物资实时监控、精准定位和智能调度。通过RFID、二维码等自动识别技术,确保信息准确更新,支持移动端操作,快速响应突发事件,提供定制化解决方案,优化跨部门协作,提高救援效率,降低风险。
388 47
|
12月前
|
机器学习/深度学习 编解码 物联网
极致的显存管理!6G显存运行混元Video模型
混元 Video 模型自发布以来,已成为目前效果最好的开源文生视频模型,然而,这个模型极为高昂的硬件需求让大多数玩家望而却步。魔搭社区的开源项目 DiffSynth-Studio 近期为混元 Video 模型提供了更高效的显存管理的支持,目前已支持使用24G显存进行无任何质量损失的视频生成,并在极致情况下,用低至 6G 的显存运行混元 Video 模型!
1001 13
|
传感器 监控 安全
物联网(IoT):定义、影响与未来
物联网(IoT):定义、影响与未来
1910 3
|
存储 关系型数据库 MySQL
2022年最新最详细的MYSQL数据库安装(详细图解过程、毕成功)
这篇文章提供了2022年最新最详细的MYSQL数据库安装教程,包括下载、安装步骤图解、初始化配置文件创建、登录密码修改注意事项,并分享了作者在安装过程中遇到的常见问题及其解决方法。
2022年最新最详细的MYSQL数据库安装(详细图解过程、毕成功)
|
C# 图形学 C++
使用vscode开发C#+unity没有代码提示问题
使用vscode开发C#+unity没有代码提示问题
977 0
使用vscode开发C#+unity没有代码提示问题
|
存储 数据库 索引
B树和B+树的插入、删除图文详解
B树和B+树的插入、删除图文详解
609 0
|
机器学习/深度学习 算法 网络架构
大模型开发:什么是梯度消失和梯度爆炸问题?如何解决这些问题?
深度学习中的梯度消失和爆炸问题影响模型学习和收敛。梯度消失导致深层网络参数更新缓慢,而梯度爆炸使训练不稳。解决方法包括:使用ReLU类激活函数、权重初始化策略(如He或Xavier)、残差连接、批量归一化。针对梯度爆炸,可采用梯度裁剪、权重约束和优化器如RMSProp、Adam。结合这些技术能改善网络训练效果和稳定性。
3472 3