事件循环(单线程是异步产生的原因,事件循环是异步实现的方式)

事件循环,也叫做消息循环,是浏览器渲染主线程的工作方式

在chrome源码中,会开起一个不会结束的for循环(死循环),每次循环从消息队列中取出第一个任务执行,其他线程可以在合适的时候将任务加入到消息队列末尾

以前把消息队列分为,宏队列和微队列,但是这种说法目前已经无法满足复杂的浏览器环境。取而代之的是一种更加灵活的方式。

根据w3c官方解释,每个任务有不同的类型,同一类型的任务必须在同一个队列,不同的任务可以属于不同的队列。不同的队列有不同的优先级,在一次事件循环中由浏览器觉得取出哪一个队列的任务,但是浏览器必须有一个微队列,这个微队列的任务一定具有最高的优先级,必须优先调度执行

扩展
在chrome浏览器中至少包含了以下队列
从优先级高到底

微队列(用户存放需要最快执行的任务)
交互队列(用户操作后产生的事件处理任务)
延时队列(存放计时器到达后的回调任务)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值