JavaScript 宏任务与微任务 - Web前端工程师面试题讲解
炒饭放榨菜:
这边需要突出个重点 微任务队列只有一个 而宏任务队列可以有多个
【回复】回复 @小康首陀罗 : https://html.spec.whatwg.org/multipage/webappapis.html#task-queue
【回复】回复 @炒饭放榨菜 :👌 谢老哥
【回复】老哥 ,宏任务可以多个 这个有权威文档吗 没怎么听说过
JLchenc:
真好,今天下午研究了一下午的事件循环,刚进来,又看到了这个视频,看来有缘分啊[呲牙]
随笔上帝:
蛋老师,06:24里面说之道微任务队列被清空之后,浏览器可能会重新渲染,然后再执行下一个宏任务,那请问一下,在清空微任务的过程当中,某一个微任务里面又有宏任务和微任务怎么办??还是会继续另外开一个宏任务队列和微任务队列,分派任务嘛?[doge]
【回复】回复 @盐salt- : https://blog.csdn.net/weixin_30871701/article/details/97270307?spm=1001.2014.3001.5506
阿布丁喔:
老师,宏任务堆列中出堆列一个宏任务,其中如果包含微任务,那么下一个宏任务运行之前先运行这个微任务吗?
【回复】回复 @盐salt- :是这样。一次执行一个宏任务,宏任务中有同步和微任务。同步先执行,微任务后执行,等一个宏任务完全执行完了调下一个宏任务
精神病患者孤独:
爱了,最近在准备面试,看这些视频真的很有用!
黄米豆_:
老师 一轮loop最多执行多少个微任务,之前看别人面试有个题是 一直塞微任务 宏任务什么时候会执行
【回复】当微任务队列清空后才回去执行宏任务
【回复】这个是有上限的,具体要视各个浏览器的实现而定
爱分享的小铁王:
老师如果script中有两个settimeout
一个是2s 输出2 一个是1s 输出1
1s里面的有个promise.then 里面有个settimeout是0秒的 输出3
【回复】浏览器会为,定时器专门开一个定时模块。
当 定时器 计时结束后,才会把这个定时器的回调函数放入宏任务队列中。
promise实例里的当做同步代码执行,.then里的才是微任务。
嵌套情况,一层一层往下看就好了。
【回复】回复 @刂C刂C刂 : 定时器正在计时的时候,程序来个alert,这个计时会暂停还是继续计时并最终放到宏任务队列中呢?