event loop(事件循环/事件轮询)

什么是event loop

  • JS是单线程运行的
  • 异步要基于回调来实现
  • event loop 就是异步回调的实现原理

event loop是事件轮询,一直去回调队列里查询有没有可以执行的异步函数,有的话,就放回主线程的栈里执行

event loop的执行过程

js 如何执行

  • 从前到后,一行一行执行
  • 如果某一行执行报错,则停止下面代码的执行
  • 先把同步代码执行完,再执行异步
console.log('Hi')
setTimeout(function cb1(){
  console.log('cb1')
},5000)
console.log('Bye')

同步代码放栈call stack里执行
遇到异步,先记录下来web apis,时机到了/执行完放回调队列callback queue
所有同步运行完,浏览器启用事件轮询event loop,去回调队列callback queue查询异步队列有没有可以执行的函数,一直轮询查找

请添加图片描述

DOM事件和event loop的关系

  • DOM事件也使用回调,基于event loop,什么时候用户点击了(时机),就会把返回函数放回调队列callback queue里,事件轮询event loop查找,执行
  • DOM事件使用回调,基于不是event loop ,但不是异步
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值