微任务宏任务详解题目

在这里插入图片描述
注意点:我们的异步任务1和异步任务2并不是直接放在任务队列里面,而是先挂载到我们相应的线程下面!!!

假如说我们的宏任务执行得很快,100ms就执行完了,那么我们就会去轮询我们的任务队列,但是异步任务1到1s才会被加入到任务队列中!!!所有会空轮询900ms!!!!对于异步任务2会在2s后才会挂载到任务队列中!!!

结论:我们说延迟1s但是可能并不会仅仅只有1s延迟,而是1s后挂在到队列中!!如果宏任务执行了10s。那么就会在1s的时候挂载到任务队列中,然后再等9s后再执行


执行完同步任务过(js主线程的任务)后:我们会先去清空微任务队列再去清空同步任务!!!!

在这里插入图片描述

队列循环!!!!先同后异,先微后宏

在这里插入图片描述
问题:要是微任务和宏任务嵌套怎么办???

我们来看这个题的输出:

在这里插入图片描述
D A C F H B G E
我们先遇到了D,,然后遇到了E,将E添加到宏任务,然后遇到了A,promise遇到await之前都是宏任务!并且await这句代码也是宏任务,只有await下面的代码才是微任务,这个时候我们就会输出C,接着是F,然后遇到了then,将then里面的代码添加到微任务队列中,最后遇到了H,这个时候我们的宏任务队列有E,微任务队列有B,G,我们先去清空我们的微任务队列,再去清空宏任务队列!!!


一个奇怪的题

在这里插入图片描述
这段代码当我们点击浏览器中的button的时候我们输出的是L1 M1 L2 M2,因为我们的上面的那个事件和下面的那个事件没有关联,相当于两段script,分别触发!!

但是!!

在这里插入图片描述
如果我们通过.click来调用这个代码,那么就会是L1 L2 M1 M2!!!不会分开调用!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值