什么是宏任务与微任务?
我们都知道 Js 是单线程的,但是一些高耗时操作带来了进程阻塞的问题。为了解决这个问题,Js 有两种任务的执行模式:同步模式(Synchronous)和异步模式(Asynchronous)
在异步模式下,创建异步任务主要分为宏任务与微任务两种。ES6 规范中,宏任务(Macrotask) 称为 Task, 微任务(Microtask) 称为 Jobs。宏任务是由宿主(浏览器、Node)发起的,而微任务由 JS 自身发起。
宏任务与微任务的几种创建方式
宏任务(Macrotask) | 微任务(Microtask) |
---|---|
setTimeout | requestAnimationFrame(有争议) |
setInterval | MutationObserver(浏览器环境) |
MessageChannel | Promise.[ then/catch/finally ] |
I/O,事件队列 | process.nextTick(Node环境) |
setImmediate(Node环境) | queueMicrotask |
script(整体代码块) |
如何理解 script(整体代码块)是个宏任务呢
实际上如果同时存在两个 script 代码块,会首先在执行第一个 script 代码块中的同步代码,如果这个过程中创建了微任务并进入了微任务队列,第一个 script 同步代码执行完之后,会首先去清空微任务队列,再去开启第二个 script 代码块的执行。所以这里应该就可以理解 script(整体代码块)为什么会是宏任务。
什么是宏任务与微任务?相关推荐
- 易生信-宏基因组积微学术论坛:基于大数据整合准确预测土壤的枯萎病发生...
博彩众家之长,积微成就突破.为促进我国宏基因组研究领域的学术交流和技术分享,推动微生物组领域的发展,"宏基因组"公众号联合国内外优秀人才组织"易生信-宏基因组 积微学术论 ...
- js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)...
javascript是单线程,一切javascript版的"多线程"都是用单线程模拟出来的,通过事件循环(event loop)实现的异步. javascript事件循环 事件循环 ...
- js中的事件循环和宏任务和微任务的理解
参考许多大神的文章,写下自己的理解 事件循环: 说到事件循环就得谈到js中同步和异步的执行顺序 1.javascript将任务分为同步任务和异步任务,同步任务放到主线中,异步函数首先进行回调函数注册. ...
- 宏任务和微任务执行顺序_确保任务的执行顺序
宏任务和微任务执行顺序 有时有必要对线程池中的任务施加一定的顺序. JavaSpecialists通讯的第206期提出了一种这样的情况:我们使用NIO从多个连接中读取数据. 我们需要确保来自给定连接的 ...
- ajax是宏任务还是微任务,(滴滴面试)事件循环Event Loop及微任务和宏任务的执行过程详解...
之前一直在面试,对于一些大厂面试题真的还是很注重原理和基础的, 还有就是数据结构和算法这种,校招的话,这些是很重要的, 前天和滴滴的人面试,问的真心觉得不难,而且也都是现在面试前端很常见的问题, 对于 ...
- 同步、异步事件循环(宏任务、微任务「大厂真题解析」)
引言:Js 是单线程,多任务执行时会触发进程阻塞问题.所以,Js 有两种任务的执行模式:同步和异步. 同步任务:运行在主线程,先于异步任务执行 异步任务:分为宏任务和微任务,微任务先于宏任务执行 微任 ...
- 事件循环中的宏任务和微任务执行顺序
事件循环中的宏任务和微任务执行顺序 先来了解一下事件循环.宏任务.微任务和Promise 1.事件循环(Event Loop)运行机制 执行一个宏任务(栈中没有就从事件队列中获取) 执行过程中如果遇到 ...
- js的事件循环机制,同步和异步,以及宏任务与微任务的执行顺序
前置知识点(重要): 1.什么是事件循环:js是单线程语言,同个时间执行一件事(同步),但是他可以有一个异步队列,遇到异步操作(比如说ajax这种阻塞时间很久的事情)把它们先放入异步队列,并且继续往下 ...
- 赛孚耐SafeNet宏狗GrandDog微狗MicroDog加密狗复制破解路径
文章转载自:USB-Key逆向研究中心https://www.ukeycopy.com/h-col-127.html 赛孚耐SafeNet宏狗GrandDog微狗MicroDog加密狗复制破解 一.复 ...
- 简单易懂的宏任务和微任务执行顺序
背景 很多朋友在写面试题:宏任务与微任务的执行时机时,容易犯迷糊.之前我也写过两篇文章,这次加上详细的讲解,让大家更容易理解. 什么是宏任务.微任务? 1.首先要称得上是宏任务.微任务的,必须是一个回 ...
最新文章
- vivo自带便签新版_vivo手机笔记在哪里及如何用vivo手机做笔记?
- maya绑定控制器在大纲里是灰色的_3dsmax绑定转maya ADV插件
- 尚硅谷公开课--struts2--2--搭建struts2环境以及struts2简单例子
- Oracle第三课之PLSQL
- python 怎么取对数_概率矩阵分解(PMF)及MovieLens上的Python代码
- 文档过期打不开怎么办_标准的产品需求文档在这里!(详细说明版)(2)
- Hello Blazor:(15)使用bUnit进行单元测试
- sublime text 3配置Kotlin
- python数据分析常用类库(1.1)
- Python_将conda里的环境导入到pychram中
- 关于高等数学、线性代数、数理统计和概率论
- Unity人物动画扩展
- java 图像锐化_Java中图像锐化操作的方法详解
- 【EXLIBRIS】墙上的坏人
- 怎样建自己的网站?如何建立一个网站?建网站的步骤?
- 《设计模式》(博客园精华集)
- 带计算机的笔记本图片,带上这些高性能的轻薄笔记本 出差旅行再也不用怕
- 注册控件失败解决办法
- CentOS下安装无线网卡驱动
- matlab脚本页怎么还原,当前的页面脚本发生错误matlab