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

宏任务与微任务

一、宏任务
1、概念

        指消息队列中等地被主线程执行的事件

2、种类

        script主代码块、setTimeout 、setInterval 、nodejs的setImmediate 、MessageChannel(react的fiber用到)、postMessage、网络I/O、文件I/O、用户交互的回调等事件、UI渲染事件(DOM解析、布局计算、绘制)、Ajax 等等        

3、举例
setTimeout(() => {console.log("200");
});
二、微任务
 1、概念

        可以看成是一个需要异步执行的函数。

 2、种类

        Promise async/await 等。

 3、举例
Promise.resolve().then(() => {console.log("300");
});
三、区别

1、微任务会在宏任务之前执行

        即:主线程任务 => 异步任务(微任务 => 宏任务)

2、常用到的微任务 Promise.then

 new Promise在实例化的过程中所执行的代码是同步的,而在 then中注册的回调函数才是异步的.

new Promise(function(resolve){console.log('1'); // 主线程任务resolve();
}).then(function(){console.log('2') // 微任务
});
四、执行顺序

异步跟出场顺序有关系,不同类型(☞ 宏任务和微任务)的异步跟出场顺序就没关系了。

微任务比宏任务先执行。

console.log("100");
setTimeout(() => {console.log("200");
});
Promise.resolve().then(() => {console.log("300");
});
console.log("400");//  输出结果为:100、400、300、200

http://www.lryc.cn/news/377061.html

相关文章:

  • 昇思大模型学习·第一天
  • python调用chatgpt
  • YOLOV8 目标检测:训练自定义数据集
  • 动态更新自建的Redis连接池连接数量
  • 浅谈设计师的设计地位
  • C/C++ string模拟实现
  • 微信小程序学习(八):behaviors代码复用
  • 【The design pattern of Attribute-Based Dynamic Routing Pattern (ADRP)】
  • 2713. 矩阵中严格递增的单元格数
  • git创建子模块
  • 把Deepin塞进U盘,即插即用!Deepin To Go来袭
  • ​​给【AI硬件】创业者的论文、开源项目和产品整理
  • 模拟面试题卷二
  • 22种常用设计模式示例代码
  • Java面试题:对比ArrayList和LinkedList的内部实现,以及它们在不同场景下的适用性
  • ping: www.baidu.com: 未知的名称或服务(IP号不匹配)
  • 谷神前端组件增强:子列表
  • 测试cudaStream队列的深度
  • ​海康威视 isecure center 综合安防管理平台任意文件上传漏洞
  • shadertoy-安装和使用
  • matlab线性多部法求常微分方程数值解
  • 前端页面实现【矩阵表格与列表】
  • GPT4v和Gemini-Pro调用对比
  • 破布叶(Microcos paniculata)单倍型染色体级别基因组-文献精读22
  • 浅谈RC4
  • uniapp微信小程序开发物料
  • 大数据工程师如何做到数据可视化?
  • Java 序列化与反序列化
  • 自定义防抖注解
  • 【尚庭公寓SpringBoot + Vue 项目实战】登录管理(十八)