前端事件循环的小疑问

#前端##前端面试必备宝典#
我所理解的事件循环是图里的这样的。然后查阅相关资料关于微任务和宏任务的区别。
微任务:直接在js引擎中执行,没有参与事件循环的异步任务
宏任务:参与了事件循环的异步任务
那么问题来了,微任务是怎么进入事件队列的,走不走浏览器线程?走的话那不就是参与了事件循环了?不走的话通过js线程直接放到队列里?
全部评论
我认为 事件循环中遇到宏任务 微任务才会放到队列中,所以 setTimeout是同步执行的 里面的回调函数是异步执行的
2 回复 分享
发布于 2023-10-19 21:48 北京
浏览器环境下,宏任务是放在消息队列里的,事件循环for(;;)从消息队列里取出来执行,个别还有其他队列,比如setTimeout的延时队列,执行都是由渲染进程中的主线程执行的,而微任务是在执行代码过程中,V8引擎开辟一个空间存放微任务队列,所以微任务是代码层级的,宏任务结束之后会有检查点清空微任务队列。
2 回复 分享
发布于 2023-10-19 16:22 浙江
你的理解是有问题的,目前的浏览器有微任务队里实现,blink宏任务按照类型也实现了不同的队列,blink中这块源码: https://source.chromium.org/chromium/chromium/src
1 回复 分享
发布于 2023-10-19 23:16 上海
这是我最新的理解
点赞 回复 分享
发布于 2023-10-22 17:16 广东
js主线程的执行本身就可以看作是一次宏任务,在这个宏任务里会执行掉同步任务在执行所以微任务。后续宏任务同理
点赞 回复 分享
发布于 2023-10-20 06:57 上海
浏览器中有多个“微任务”队列,会按照队列的优先级依次执行,定时器任务放在微任务优先级低的任务队列中。
点赞 回复 分享
发布于 2023-10-20 00:21 上海
还是说,微任务队列是藏在js引擎内部的,跟宏任务不是一起的,图里所谓的事件队列就只是宏任务队列
点赞 回复 分享
发布于 2023-10-19 15:40 广东

相关推荐

关于我大学本科四年,想了很多,但还是不知道该怎么动笔 “大学四年,是我从懵懂少年走向职场青年的转折期。这一路跌跌撞撞,有迷茫,有遗憾,也有成长和决心。” 大一刚进来时仍然有高中那股学习劲,经常一个人去图书馆学高等数学,但后面劲头一过便开始在宿舍开启躺平生活(现在想想那段时间真的很爽,无忧无虑)。由于大一担任班干部,所以经常要跟其他班的班干部交流,在此期间认识了隔壁班的一位女生,短发而很可爱,因为很多团建还有比赛都是我们两班一起参加的,而且我和她都是负责人,所以交集很多,后面慢慢地彼此对产生了好感,所以在大一刚开学的2个月后,我们在一起了,彼此之前都是初恋。但当时我真的是太太太直男了,对感情的想...
真烦好烦真烦:骗哥们可以,别把你自己也骗到了就行。哥们被你骗了真无所谓的,打个哈哈就过了。但希望你打完这段话后擦一下眼角,别让眼泪掉在手机屏幕上了就行。你说的这些话,哥们信一下也是没什么的。还能让你有个心里安慰,但这种话说出来骗骗兄弟就差不多得了,哥们信你一下也不会少块肉,但是你别搞得自己也当真了就行。哥们被你骗一下是真无所谓的,兄弟笑笑也就过去了。真不是哥们想要破你防,你擦擦眼泪好好想想,除了兄弟谁还会信你这些话?
点赞 评论 收藏
分享
AI牛可乐:哇塞,恭喜恭喜!48万的年薪,真是让人羡慕呀!看来你找到了一个超棒的工作,可以享受不卷的生活啦!🎉有没有什么求职秘诀想要分享给小牛牛呢?或者,想不想知道我是谁呢?😉(点击我的头像,我们可以私信聊聊哦~)
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
点赞
6
分享

创作者周榜

更多
牛客网
牛客企业服务