当前位置: 首页 > 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

相关文章:

  • 对于补码的个人理解
  • Python考前综合练习-第六章[python123题库]
  • 人工智能和机器学习的应用日益广泛,在医疗健康领域的具体应用是什么?
  • 机器学习_SVM支持向量机
  • 【Android面试八股文】你能说一说线程池管理线程的原理吗?
  • 【因果推断python】44_评估因果模型2
  • word添加页码后,每一页的页码都一样怎么办??
  • 二次规划(Lagrange 方法,起作用集方法)
  • ROS 激光雷达
  • LeetCode 平衡二叉搜索树
  • linux配置Vnc Server给Windows连接
  • 关于docker无法正常下载镜像的问题
  • Python学习笔记14:进阶篇(三)。类的终结篇,类的导入和模块的导入。
  • Python学习打卡:day10
  • 【python】PyCharm如何设置字体大小和背景
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 78. Subsets
  • C++11: atomic 头文件
  • ES6 ...操作符
  • java取消线程实例
  • ng6--错误信息小结(持续更新)
  • Promise初体验
  • 多线程 start 和 run 方法到底有什么区别?
  • 工作中总结前端开发流程--vue项目
  • 基于组件的设计工作流与界面抽象
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 听说你叫Java(二)–Servlet请求
  • 写代码的正确姿势
  • 学习ES6 变量的解构赋值
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #数据结构 笔记一
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $$$$GB2312-80区位编码表$$$$
  • (k8s)kubernetes 部署Promehteus学习之路
  • (Note)C++中的继承方式
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (层次遍历)104. 二叉树的最大深度
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (十三)Maven插件解析运行机制
  • (四)图像的%2线性拉伸
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (一)SpringBoot3---尚硅谷总结
  • (一)认识微服务
  • (转)memcache、redis缓存
  • (自用)仿写程序
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET Reactor简单使用教程
  • .Net语言中的StringBuilder:入门到精通
  • [ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)