ES6事件循环

本文深入探讨了JavaScript的事件循环机制,包括JS引擎如何处理事件队列,以及浏览器宿主环境中的5个线程:JS引擎线程、GUI线程、事件监听线程、计时线程和网络线程。重点讲解了宏任务和微任务的概念,阐述了它们在执行顺序上的差异。同时,还介绍了浏览器中事件队列的两种类型:宏任务队列和微任务队列,以及它们如何影响代码的执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件循环

JS引擎对事件队列的取出执行方式,以及与宿主环境的配合,称之为事件循环。
JS运行的环境称之为宿主环境
浏览器宿主环境中包含5个线程:

  1. JS引擎:负责执行执行栈的最顶部代码
  2. GUI线程:负责渲染页面
  3. 事件监听线程:负责监听各种事件
  4. 计时线程:负责计时
  5. 网络线程:负责网络通信

事件队列在不同的宿主环境中有所差异,大部分宿主环境会将事件队列进行细分。在浏览器中,事件队列分为两种:
1.宏任务(队列): macroTask,计时器的回调,事件的回调,http等绝大部分异步函数进入宏队列。
2.微任务(队列): MutationObserver(用于监听某个Dom对象的变化),Promise产生的回调进入微队列。当执行栈清空时,JS引擎首先会将微任务中的所有任务依次执行结束,如果没有微任务,则执行宏任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值