【JavaScript】宏队列与微队列 - 执行顺序 -事件循环

事件循环

同步和异步任务分别进入不同的执行"场所",同步的进入主线程,异步的进入Event Table并注册函数。
当指定的事情完成时,Event Table会将这个函数移入Event Queue。
主线程内的任务执行完毕为空,会去Event Queue读取对应的函数,进入主线程执行。
上述过程会不断重复,也就是常说的Event Loop(事件循环)。
在这里插入图片描述

JS执行过程图原理图

在这里插入图片描述

说明

JS是单线程的

  • JS 中用来存储待执行回调函数的队列包含2个不同特定的队列
  1. 宏队列:用来保存待执行的宏任务(回调),比如:定时器回调/DOM 事件回调/ajax 回调

  2. 微队列:用来保存待执行的微任务(回调),比如:promise 的回调/MutationObserver 的回调还有如 I/O 操作、UI 渲染

  • JS 执行时会区别这2个队列
  1. JS 引擎首先必须执行所有的初始化同步任务代码

  2. 每次准备取出第一个宏任务microtask前,都要将所有的microtask微任务一个一个取出来执行

总结: 同步任务——微队列——宏队列

例子

setTimeout(() => {
    // 放入宏队列   3
  console
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值