前端事件循环的小疑问

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

相关推荐

#25届秋招公司红黑榜#   去年九月份课很少,参加了中国民生银行的秋招,网申-笔试-线上面试,之后是线下面试。整体来讲,这个公司留给我的印象真的超级好,虽然我面试成绩不够高没有留在那😭  线下面试那天,上午十点的面试,我九点半到目的地,看到那一整栋大楼十几层都是这个银行的,当时很震惊,因为我第一次在生活中见到这么大面积的公司。这是第二印象很好。登记信息后人家送了一个袋子,里面是盛放记事本的盒子和一瓶水,全部带有民生银行的logo。大概面试流程工作除了有工作人员讲解之外,还放了流程指示牌。   面试是六个人一组,我们组在等待过程中相互了解了一下。里面有本地的,还有海归,或者是硕士,大家手里都有好几份offer,面试时的表现也好,大家好。这是我遇到的好人。  之后是面试官,一共三位面试官,印象最深刻的是主面试官左手边的那位面试官。人怎么能好看到那个地步,知性优雅,大方得体,温婉威严,空谷幽兰有了具象化的体现。三位面试官都好,在面试过程中也对中国民生银行有了更进一步的认识:这里的文化氛围福利很棒!(也不排除有白月光记忆滤镜的可能哈😁)  在整个从网申到线下面试的过程尤其是线下面试这一阶段留给我的心得,让我在未来其他的面试中表现得游刃有余。
点赞 评论 收藏
分享
光伏 应届生 试用期11k,转正12k 双一流本科
点赞 评论 收藏
分享
点赞 6 评论
分享
牛客网
牛客企业服务