JavaScript 为什么要区分微任务和宏任务

区分微任务和宏任务是为了将异步队列任务划分优先级,通俗的理解就是为了插队。

一个 Event Loop,Microtask 是在 Macrotask 之后调用,Microtask 会在下一个 Event Loop 之前执行调用完,并且其中会将 Microtask 执行当中新注册的 Microtask 一并调用执行完,然后才开始下一次 Event Loop,所以如果有新的 Macrotask 就需要一直等待,等到上一个 Event Loop 当中 Microtask 被清空为止。由此可见,我们可以在下一次 Event Loop 之前进行插队。

如果不区分 MicrotaskMacrotask,那就无法在下一次 Event Loop 之前进行插队,其中新注册的任务得等到下一个 Macrotask 完成之后才能进行,这中间可能你需要的状态就无法在下一个 Macrotask 中得到同步。

【Day09】JavaScript 为什么要区分微任务和宏任务相关推荐

  1. JavaScript中的微任务和宏任务

    在正常情况先下,JavaScript任务是同步执行的,即执行完一个前一个任务,然后执行后一个任务.也就是跟着主线任务按序执行. 只有遇到异步任务的情况下,执行顺序才会改变.这时,需要区分两种任务:宏任 ...

  2. JavaScript异步编程【上】 -- 同步和异步、事件循环(EventLoop)、微任务和宏任务、回调函数

    文章内容输出来源:拉勾教育 大前端高薪训练营 前言 在我们学习JavaScript中,我们知道,JavaScript的执行环境是单线程的.所谓单线程是指一次只能完成一个任务,如果有多个任务,就必须排队 ...

  3. JavaScript基础:浅聊事件循环(Event LooP)以及微任务,宏任务,DOM渲染

    一直说JavaScript是单线程的执行的(当然也可以通过其它其它的方式异步,本篇暂时不聊). 内核的组成 首先聊一下浏览器的内核组成部分,当然下面也不是全部,而只是说一些常见的. 主线线程 js引擎 ...

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

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

  5. 什么是宏任务、微任务?宏任务、微任务有哪些?又是怎么执行的?

    文章目录 前言 一.那么宏任务和微任务是什么呢? 二.宏任务.微任务有哪些? 三.宏任务.微任务是怎么执行的? 四.案例 总结 前言 关于 Javascript 的执行顺序,众所周知是按照顺序自上而下 ...

  6. 同步任务和异步任务(微任务和宏任务)

    同步任务和异步任务(微任务和宏任务) JavaScript是一门单线程语言 分为同步任务和异步任务 同步任务是指在主线程上排队执行的任务, 只有前一个任务执行完毕,才能继续执行下一个任务. 异步任务指 ...

  7. 什么是任务,微任务和宏任务?

    事件循环的讲解, 不明白可以戳一戳, 看一看 微任务和宏任务的面试题 1. 什么是任务? 众所周知, JavaScript是单线程的; 一个任务就是一个线程(ajax请求, 用户触发的事件都可以称之为 ...

  8. ES6 —— 3、async-await、微任务和宏任务、class、proxy(代理)

    重写留言板2: index2.js const obj = {m:new Map(),$:name => document.querySelector(name),bind:function() ...

  9. async js 返回值_图文讲解浏览器执行JS过程中的微任务和宏任务

    背景 我们知道浏览器有一个特定的事件执行机制,专业名词叫做Event Loop.如下图所示,浏览器会优先执行同步代码,遇到异步的代码时,会被挂起并在需要执行的时候加入到 Task(有多种 Task) ...

最新文章

  1. vsftpd下错误之:500 OOPS
  2. 复旦计算机考研19年录取线,2019年复旦大学考研复试分数线已公布
  3. 通用前端监控采集脚本
  4. 使用简单的Java代码在SAP C4C里创建销售订单
  5. 关于“最终”的最终决定
  6. C#基础(201)--常量枚举
  7. 如何禁用、隐藏、显示Windows11上的小部件菜单
  8. PHP中文字符串截取类
  9. python labelencoder参数_对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
  10. 语音识别在智能交通中的几种应用分析
  11. 企业计算机仿真技术应用,基于计算机仿真技术的企业生产物流系统优化研究
  12. 微信游戏推荐系统大揭秘
  13. 抽数,数据抽取,增量数据的抽取方式
  14. 4位加法器四级流水线、4位加法器两级流水线以及32位加法器八级流水线设计
  15. LCL滤波器电容阻尼选择
  16. 7-1 用格里高利公式求给定精度的PI值 (15分)
  17. Java8 Lambda表达式(三)Lambda表达式与Stream API
  18. JDK1.8 Unsafe类中的park和unpark方法解析
  19. 荣耀9i升级android10,荣耀9i
  20. 你浏览器的书签栏还够用么? - 程序员学点xx 特辑

热门文章

  1. css hacks (ie6,ie7,ie8,firefox,Chrome)
  2. redis——redis简介及基本交互方法
  3. BrainFuck——C实现BrainFuck解释器
  4. Python的发展方向
  5. 【今日CV 视觉论文速览】20 Nov 2018
  6. TCP—三次握手和四次挥手详解
  7. Java—抽象类和接口的区别
  8. 解决 阶段02 商品类与初始商品
  9. 利用Java Swing 实现游戏开发
  10. ffmpeg下载直播流