我们都知道 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(整体代码块)为什么会是宏任务。

什么是宏任务与微任务?相关推荐

  1. ​易生信-宏基因组积微学术论坛:基于大数据整合准确预测土壤的枯萎病发生...

    博彩众家之长,积微成就突破.为促进我国宏基因组研究领域的学术交流和技术分享,推动微生物组领域的发展,"宏基因组"公众号联合国内外优秀人才组织"易生信-宏基因组 积微学术论 ...

  2. js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)...

    javascript是单线程,一切javascript版的"多线程"都是用单线程模拟出来的,通过事件循环(event loop)实现的异步. javascript事件循环 事件循环 ...

  3. js中的事件循环和宏任务和微任务的理解

    参考许多大神的文章,写下自己的理解 事件循环: 说到事件循环就得谈到js中同步和异步的执行顺序 1.javascript将任务分为同步任务和异步任务,同步任务放到主线中,异步函数首先进行回调函数注册. ...

  4. 宏任务和微任务执行顺序_确保任务的执行顺序

    宏任务和微任务执行顺序 有时有必要对线程池中的任务施加一定的顺序. JavaSpecialists通讯的第206期提出了一种这样的情况:我们使用NIO从多个连接中读取数据. 我们需要确保来自给定连接的 ...

  5. ajax是宏任务还是微任务,(滴滴面试)事件循环Event Loop及微任务和宏任务的执行过程详解...

    之前一直在面试,对于一些大厂面试题真的还是很注重原理和基础的, 还有就是数据结构和算法这种,校招的话,这些是很重要的, 前天和滴滴的人面试,问的真心觉得不难,而且也都是现在面试前端很常见的问题, 对于 ...

  6. 同步、异步事件循环(宏任务、微任务「大厂真题解析」)

    引言:Js 是单线程,多任务执行时会触发进程阻塞问题.所以,Js 有两种任务的执行模式:同步和异步. 同步任务:运行在主线程,先于异步任务执行 异步任务:分为宏任务和微任务,微任务先于宏任务执行 微任 ...

  7. 事件循环中的宏任务和微任务执行顺序

    事件循环中的宏任务和微任务执行顺序 先来了解一下事件循环.宏任务.微任务和Promise 1.事件循环(Event Loop)运行机制 执行一个宏任务(栈中没有就从事件队列中获取) 执行过程中如果遇到 ...

  8. js的事件循环机制,同步和异步,以及宏任务与微任务的执行顺序

    前置知识点(重要): 1.什么是事件循环:js是单线程语言,同个时间执行一件事(同步),但是他可以有一个异步队列,遇到异步操作(比如说ajax这种阻塞时间很久的事情)把它们先放入异步队列,并且继续往下 ...

  9. 赛孚耐SafeNet宏狗GrandDog微狗MicroDog加密狗复制破解路径

    文章转载自:USB-Key逆向研究中心https://www.ukeycopy.com/h-col-127.html 赛孚耐SafeNet宏狗GrandDog微狗MicroDog加密狗复制破解 一.复 ...

  10. 简单易懂的宏任务和微任务执行顺序

    背景 很多朋友在写面试题:宏任务与微任务的执行时机时,容易犯迷糊.之前我也写过两篇文章,这次加上详细的讲解,让大家更容易理解. 什么是宏任务.微任务? 1.首先要称得上是宏任务.微任务的,必须是一个回 ...

最新文章

  1. vivo自带便签新版_vivo手机笔记在哪里及如何用vivo手机做笔记?
  2. maya绑定控制器在大纲里是灰色的_3dsmax绑定转maya ADV插件
  3. 尚硅谷公开课--struts2--2--搭建struts2环境以及struts2简单例子
  4. Oracle第三课之PLSQL
  5. python 怎么取对数_概率矩阵分解(PMF)及MovieLens上的Python代码
  6. 文档过期打不开怎么办_标准的产品需求文档在这里!(详细说明版)(2)
  7. Hello Blazor:(15)使用bUnit进行单元测试
  8. sublime text 3配置Kotlin
  9. python数据分析常用类库(1.1)
  10. Python_将conda里的环境导入到pychram中
  11. 关于高等数学、线性代数、数理统计和概率论
  12. Unity人物动画扩展
  13. java 图像锐化_Java中图像锐化操作的方法详解
  14. 【EXLIBRIS】墙上的坏人
  15. 怎样建自己的网站?如何建立一个网站?建网站的步骤?
  16. 《设计模式》(博客园精华集)
  17. 带计算机的笔记本图片,带上这些高性能的轻薄笔记本 出差旅行再也不用怕
  18. 注册控件失败解决办法
  19. CentOS下安装无线网卡驱动
  20. matlab脚本页怎么还原,当前的页面脚本发生错误matlab

热门文章

  1. git-bash 的安装配置及其基本使用
  2. 怎么解决在微信中不能直接下载APP(APK)的方案
  3. android 获取 imei号码
  4. 使用 Serialization 保存数据到文件
  5. 算法四:跳楼梯问题2
  6. 微海快递单号批量查询 v1.0
  7. 计算组合数 汉诺塔 喵帕斯之天才算数少女 神奇的函数
  8. pip手把手安装pytorch,保姆级教学
  9. Chatgpt的三个镜像网站(无需”魔法“直接用)
  10. 如何阻止input的focus事件