首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么是之前在eventloop上工作的?微任务还是宏任务?

之前在event loop上工作的是宏任务。在JavaScript中,宏任务是指由浏览器提供的任务队列中的任务,例如用户交互事件、定时器事件、网络请求等。当主线程执行完当前的宏任务后,会检查微任务队列,如果有微任务,则会立即执行微任务队列中的所有任务,然后再执行下一个宏任务。

微任务是指由Promise、MutationObserver等API产生的任务,它们会被添加到微任务队列中。微任务的执行时机在宏任务之前,也就是在当前宏任务执行完毕后,下一个宏任务开始之前。

总结起来,之前在event loop上工作的是宏任务,而微任务则在宏任务执行完毕后立即执行。这种机制保证了JavaScript的异步执行和任务调度的顺序性。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数(云函数):https://cloud.tencent.com/product/scf
  • 腾讯云消息队列 CMQ:https://cloud.tencent.com/product/cmq
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云云服务器 CVM:https://cloud.tencent.com/product/cvm
  • 腾讯云云原生容器服务 TKE:https://cloud.tencent.com/product/tke
  • 腾讯云云安全中心:https://cloud.tencent.com/product/ssc
  • 腾讯云云直播:https://cloud.tencent.com/product/lvb
  • 腾讯云云点播:https://cloud.tencent.com/product/vod
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mpe
  • 腾讯云云存储 COS:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务:https://cloud.tencent.com/product/tbaas
  • 腾讯云腾讯会议:https://cloud.tencent.com/product/tcmeeting
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

引擎进阶():探究任务 & 任务运行机制

开始前请先思考一下: 任务任务分别有哪些方法? 任务任务互相嵌套,执行顺序是什么?...所以说任务时间粒度比较大,执行间隔不能精确控制。这就不适用于一些高实时性需求了,比如后面要讲到监听 DOM 变化。 任务   在理解了任务之后,下面我们就可以来看看什么任务了。...任务就是一个需要异步执行函数,执行时机主函数执行结束之后、当前任务结束之前。   ...也就是说执行任务过程中产生任务并不会推迟到下一个循环中执行,而是在当前循环中继续执行,这点需要注意。 以上就是任务工作流程,从上面的分析我们可以得出如下几个结论。...一个任务中,分别创建一个用于回调任务任务,无论什么情况下,任务都早于任务执行。

85310

面试官:对于任务任务,你知道多少?

老规矩,先上图: image.png 梳理这块主要还是为了让自己对代码执行逻辑能够更加清晰,当然,某些原因还是应对一些面试题。 什么任务什么任务?...先直接记住结果,再去探究为什么,看到这里应该可以回头去做出来之前那个题了,setTimeout任务,而pormise任务,「任务要比任务执行要早」,所以先打印出来300后打印200。...eventloop和DOM渲染 eventloop和DOM渲染与为什么任务任务执行晚有联系,所以我们先来弄懂这个。...但是我们这里要get一点,「我们眼睛什么时刻看到这五段话」。 要了解一点:DOM渲染就是将DOM结构或者js操作内容渲染到浏览器,让我们眼睛可以看见。...任务任务分别有哪些? 为什么任务触发时机更早? 任务任务和DOM渲染关系? 任务任务和DOM渲染,EventLoop过程?

66330

浏览器和Node.jsEventLoop事件循环机制知多少?

EventLoop事件队列中有任务任务队列,分析任务任务运行机制,有助于我们理解代码浏览器中执行逻辑。 那么,我们得思考几个问题: 浏览器EventLoop发挥着什么作用?...Node.js服务端EventLoop发挥着什么作用? 任务任务分别有哪些方法? 任务任务互相嵌套,执行顺序是什么?...任务执行时长会影响当前任务时长。一个任务中,分别创建一个用于回调任务任务,无论什么情况下,任务都早于任务执行。...通过调用requestAnimationFrame()方法,我们可以浏览器下次渲染之前执行回调函数,那么下次渲染具体什么时间节点呢?渲染和EventLoop又有着什么联系呢?...因此,任务并不像之前描述每一次EventLoop后执行处理,而是JS函数调用栈清空后处理。

1.5K20

我不知道 Event Loop

EventLoopMS中高频问题,理解繁琐,一步小心,步步入坑。 1、本文要点 1、EventLoop什么? 2、任务队列是什么? 3、同步任务和异步任务? 4、任务任务?...异步则相反,我并不强依赖你,我对你响应时间也不敏感,无论你返回还是不返回,我都能继续运行;你响应并返回了,我就继续做之前事情,你没有响应,我就做其他事情。...注意: 异步并不是Js同时执行两段操作,它只是设定了定时时间,然后放到任务队列最后面,然后去执行其他操作,当设定时间到了之后把事件拿回来继续执行。 5、任务任务?...注意: 这两个任务分别维护一个队列,均采用先进先出策略进行执行!同步执行任务都在任务执行。....然后开始下一轮EventLoop,执行任务异步代码,也就是setTimeout中回调函数 6、结语 之前兜兜转转,总是忘记事件执行顺序。

49510

重学前端(三)-聊聊我们浏览器那些事

1、为啥写代码时候要给css放前面,js 放后面 2、浏览器到底单线程还是多线程 3、为什么会有冒泡和捕获过程 4、浏览器到底怎么实现异步 5、为什么会有任务任务...js 执行栈执行 到这里我们就能清晰知道浏览器到底怎么实现异步了,而且顺带不只是异步可以用eventloop实现,甚至连事件也能用它实现,接下来,我们要来解答为啥要有任务任务区分 要想知道为啥要有任务任务区分...,开始下次任务,这时eventloop机制被触发,也就是eventloop触发js同步代码执行之后也dom渲染之后 接下来eventloop任务被一个个执行,然后遇见任务放进任务队列,遇见任务放进任务队列...,再次开始下一次eventloop,周而复始,循环往复,那么问题来了,为啥任务要在dom渲染之后,而任务要在dom渲染之前呢?...遍寻资料,我理解,之所以有任务任务区分,由于像promise等任务es规范,并不是浏览器规范,而想settiemout浏览器api规范,此时,为什么就清晰明了了,由于任务es

1.2K11

多图详解不同环境下EventLoop执行机制

当然,这里有一个小 tip ,我们可以看到每次页面渲染之前会清空所有的任务(micro)。...按照我们之前分析 EventLoop 执行结果不存在任何问题。 immediate 先执行 之所以会造成这样输出结果,本质还是 setTimeout 捣鬼。... EventLoop 中必不可少两个概念:Macro(任务)、Micro(任务)。...其实它本质和浏览器中类似的,虽然 NodeJs 下存在多个执行队列,但是每次执行逻辑相同:同样执行完成一个任务后会立即清空当前队列中产生所有任务。...Node & 浏览器 分别了解了不同环境下 EventLoop 执行机制后,我们会发现其实浏览器中和 Node 中事件循环 EventLoop 本质执行机制完全相同,都是执行完一个(macro

59420

美团前端面试题整理_2023-02-28

任务任务执行之后执行,因此同一个事件循环周期内,如果既存在任务队列又存在任务队列,那么优先将任务队列清空,再执行任务队列 我们可以看到有一个核心主线程,它执行阶段主要处理三个核心逻辑...,这两个函数我们之前内容中没有讲过,但是当你开始考虑它们 Eventloop 生命周期哪一步触发,或者这两个方法回调会在任务队列还是任务队列执行时候,才发现好像没有想象中那么简单。...所以浏览器就把这两个线程设计成互斥,即同时只能有一个线程执行 渲染原本就不应该出现在 Eventloop 相关知识体系里,但是因为 Eventloop 显然讨论 JS 如何运行问题,而渲染则是浏览器另外一个线程工作...Eventloop 生命周期里,只是浏览器又开放一个渲染之前发生 hook。...所以任务并不是像之前那样每一轮 Eventloop 后处理,而是 JS 函数调用栈清空后处理 但是 requestIdlecallback 却是一个更好理解概念。

1K10

面试官:什么 EventLoop。你:一脸蒙蔽。看完这篇文章就懂了

面试官:什么 EventLoop。你:一脸蒙蔽。...看完这篇文章就懂了 文章翻译自: https://javascript.info/event-loop 在这片文章,我们要带着两个问题去学习 EventLoop 概念是什么什么需要 EventLoop...值得注意,两种变体(无论是否分配工作)setTimeout速度上都是可比。总体计数时间没有太大差异。 为了使它们更接近,让我们进行改进。...更丰富事件循环图片如下所示(顺序从上到下,即:首先是脚本,然后任务,渲染,等等): ? 执行任何其他事件处理或呈现或执行任何其他任务之前,所有任务都已完成。...2执行所有任务:- 当任务队列不为空时:- 出队并运行最旧任务。 3渲染更改(如果有)。 4如果任务队列为空,请等待直到出现任务。 5转到步骤1。

1.1K30

了不起回调函数

,直到问题解决掉代码才会接着执行,但是我们写js过程中,其实很少有这种情况,原因js本身就是一个异步编程语言,所谓异步就是你慢没事,我跳过你,你啥时候好了,你再执行,这句话反映到代码就是延迟式编程也就是异步编程...这是个很棘手问题,所以js将我们常见一些代码写法归类,归类为两种任务列表,一种叫做任务,一种叫任务,比如常见setTimeout、setInterval、Ajax请求等就是任务,常见Promise...,一种全局执行上下文)找到了任务就执行,任务什么执行呢?...你可以理解为随时执行,他可以同步函数执行之后立即执行,也可以在上一个任务执行结束,下一个任务执行之前,中间有任务就会执行,任务不执行结束,下一个任务不会执行,所以你可以理解为只要执行下一个任务时候...,已经没有任务可以执行了,上面这段话提供信息和今天要说回调函数有很大关系,但是因为不是讲事件循环和任务,所以不展开说,下面说为什么一定要有回调函数 回调函数:正常函数由外往内传递参数进行使用参数

1.2K20

前端经典面试题合集

任务任务执行之后执行,因此同一个事件循环周期内,如果既存在任务队列又存在任务队列,那么优先将任务队列清空,再执行任务队列我们可以看到有一个核心主线程,它执行阶段主要处理三个核心逻辑。...将异步任务插入到任务队列或者任务队列中。执行任务或者任务回调函数。主线程处理回调函数同时,也需要判断是否插入微任务任务。...,这两个函数我们之前内容中没有讲过,但是当你开始考虑它们 Eventloop 生命周期哪一步触发,或者这两个方法回调会在任务队列还是任务队列执行时候,才发现好像没有想象中那么简单。...所以浏览器就把这两个线程设计成互斥,即同时只能有一个线程执行渲染原本就不应该出现在 Eventloop 相关知识体系里,但是因为 Eventloop 显然讨论 JS 如何运行问题,而渲染则是浏览器另外一个线程工作...所以任务并不是像之前那样每一轮 Eventloop 后处理,而是 JS 函数调用栈清空后处理但是 requestIdlecallback 却是一个更好理解概念。

85820

eventLoop事件循环机制

打个比喻 银行柜台就一个: 普通客户 - 任务 vip客户 - 任务 普通客户(任务)依次排队,vip客户(任务)到了之后直接插到当前正在办理普通客户后面 大白话 JavaScript...单线程执行,也就是无法同时执行多段代码,当某一段代码正在执行时候,所有后续任务都必须等待,形成一个队列,一旦当前任务执行完毕,再从队列中取出下一个任务。...所以setTimeout 并不能保证执行时间,是否及时执行取决于 JavaScript 线程拥挤还是空闲。...理解eventloop 因为js单线程,所以有一套固定执行顺序,也就是eventloopeventloop分为同步任务和异步任务。同步任务执行完才会执行异步任务。...eventloop过程简述:js从第一个任务(script标签)开始执行,会先把同步代码都执行完,中途遇到任务先加入微队列,任务加入队列。等同步代码清完,先清空队列。

50520

JavaScript同步、异步及事件循环

虽然JS单线程,但是浏览器多线程遇到像setTimeout、DOM事件、ajax等这种任务时,会转交给浏览器其他工作线程(上面提到几个线程)执行,执行完之后将回调函数放入到任务队列。...// eventLoop一个用作队列数组 // (先进,先出) var eventLoop = [ ]; var event; // “永远”执行 while (true) { // 一次tick...,会开始执行任务队列 执行完一个任务之后,跳出来,重新开始下一个循环(从1开始执行) 也就是说执行任务队列 会将队列中所有任务执行完 而执行任务队列 每次只执行一个任务 然后重新开始下一个循环...2 3 5 6 4 我们来分析一下代码执行过程 前面的两个setTimeout都是任务,所以现在任务队列有2个任务 Promise里面的代码同步任务,所以现在会马上执行 输出1 Promise...then任务,所以现在任务队列有1个任务 执行完同步任务之后,开始执行任务,也就是console.log(2), 输出2 执行完任务之后,会执行任务,第一个任务也就是第一个setTimeout

1.1K30

有哪些前端面试题必须要掌握_2023-02-27

任务任务执行之后执行,因此同一个事件循环周期内,如果既存在任务队列又存在任务队列,那么优先将任务队列清空,再执行任务队列 我们可以看到有一个核心主线程,它执行阶段主要处理三个核心逻辑...将异步任务插入到任务队列或者任务队列中。 执行任务或者任务回调函数。主线程处理回调函数同时,也需要判断是否插入微任务任务。...,这两个函数我们之前内容中没有讲过,但是当你开始考虑它们 Eventloop 生命周期哪一步触发,或者这两个方法回调会在任务队列还是任务队列执行时候,才发现好像没有想象中那么简单。...所以浏览器就把这两个线程设计成互斥,即同时只能有一个线程执行 渲染原本就不应该出现在 Eventloop 相关知识体系里,但是因为 Eventloop 显然讨论 JS 如何运行问题,而渲染则是浏览器另外一个线程工作...所以任务并不是像之前那样每一轮 Eventloop 后处理,而是 JS 函数调用栈清空后处理 但是 requestIdlecallback 却是一个更好理解概念。

57320

一张图带你搞懂Node事件循环

timers队列工作原理 timers并非真正意义队列,他内部存放计时器。 每次到达这个队列,会检查计时器线程内所有计时器,计时器线程内部多个计时器按照时间顺序排序。...,又一个nextTick任务,立即率先执行 promise 1:执行异步任务之前,清空异步任务,Promise优先级低,所以nextTick完了以后立即执行 nextTick in promise...可见,执行一个队列之前,就先按顺序检查并执行了nextTick和promise队列。等队列全部执行完毕,setTimeout(0)时机也成熟了,就被执行。...nextTick in setTimeout:执行完上边这句代码,又一个nextTick任务,立即率先执行 【这种回调函数里任务,我不能确定是紧随同步任务执行还是放到任务队列,等下一个任务执行前再清空他们...nextTick in setTimeout100:任务向下前,率先执行定时器回调内新增任务-nextTick 【这里就能确定了,下一个任务前清空任务流程】 promise in setTimeout100

1.1K21

关于EventLoop简单理解

个人博客网站欢迎交流:萤火之森:https://blog.xkongkeji.com EventLoop出现目的 js单线程 众所周知js单线程,那为什么单线程嘞,作为浏览器脚本语言,JavaScript...主要用途与用户互动,以及操作DOM。...这决定了它只能单线程,否则会带来很复杂同步问题。比如,假定JavaScript同时有两个线程,一个线程某个DOM节点添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?...于是就有了EventLoop出现。 任务任务从哪里来 任务 Promise ,当调用 Promise.resolve() 或者 Promise.reject() 时候,会产生任务。...主线程代码执行完成后就会从任务队列中去取任务执行直到任务队列清空, 任务队列完成后就会从任务队列中取出任务执行,(个人理解:主线程代码就是第一个任务) 如主线程任务一般,遇到任务放入微任务队列

7710

Eventloop不可怕,可怕遇上Promise

笔者答案:这个属于Eventloop问题。main script运行结束后,会有任务队列和任务队列。任务先执行,之后任务。...),然后根据main script中产生任务队列和任务队列,分别清空,这个时候先清空任务队列,再去清空任务队列。...Promisethen任务大家都懂,但是这个then执行方式如何呢,以及Promiseexecutor异步还是同步?...最终最终,使用setTimeout,不过这个就和任务无关了,promise变成了任务一员。 拓展思考: 为什么有时候,then中函数一个数组?有时候就是一个函数?...笔者干货总结 处理一段evenloop执行顺序时候: 第一步确认任务任务 任务:script,setTimeout,setImmediate,promise中executor 任务

68320

浏览器为契机贯穿前端知识点-大纲参考

浏览器工作原理分为以下几部分: 分析浏览器份额,种类,理解浏览器多进程还是多线程,有哪些常驻进程和常驻线程,如何相互配合 浏览器内核工作原理,渲染线程和事件队列以及JS单线程工作原理。...异步机制与事件队列,任务任务,worker,setTimeout不准原因 https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules.../ ps:click会导致任务立马执行?...js与gui渲染互斥,此时如果有用户点击上下拉等操作,页面的效果如何,比如下拉时js执行大量计算,视图先更新还是先执行大量计算 css和js资源加载互阻塞 浏览器渲染机制,代码变成页面上视图经历了哪些...深入理解nodejs Event loop 简单总结下JS中EventLoop事件循环机制 这一次,彻底弄懂 JavaScript 执行机制 浏览器工作原理:新式网络浏览器幕后揭秘 浏览器如何工作

57810

原生JS灵魂之问(下), 冲刺进阶最后一公里(附个人成长经验分享)

第28篇:如何理解EventLoop——任务任务任务(MacroTask)引入 JS 中,大部分任务都是主线程执行,常见任务有: 渲染事件 用户交互事件 js脚本执行 网络请求、...上述提到,普通任务队列和延迟队列中任务,都属于任务任务(MicroTask)引入 对于每个任务而言,其内部都有一个任务队列。那为什么要引入微任务任务什么时候执行呢?...每一个任务中定义一个任务队列,当该任务执行完成,会检查其中任务队列,如果为空则直接执行下一个任务,如果不为空,则依次执行任务,执行完成才去执行下一个任务。...因此会打印出这样结果: timer1 timer2 promise1 promise2 4.nodejs 和 浏览器关于eventLoop主要区别 两者最主要区别在于浏览器中任务每个相应任务中执行...根据EventLoop机制,当前主线程任务完成,现在检查任务队列, 发现还有一个Promise resolve,执行,现在父协程then中传入回调执行。我们来看看这个回调具体做什么

1.9K10
领券