说一说JavaScript 中的事件循环(event-loop)?event-loop 为什么这么设计?和 node 中事件循环有没有区别?

事件循环分为两种,macro和micro。JS执行过程中会先执行同步任务,然后清空microtask队列,最后执行macrotask,如此反复。

eventloop其实是为了解决一些异步回调,I/O操作。假设不区分marco/micro,统一都在macro处理,那callback可能就会很晚才执行,造成逻辑错误或者渲染很慢。

micro在每一个macro前统一执行则很好的解决了这个问题,让回调尽早的执行。

node中事件循环的microtask执行时机与浏览器略不一样。浏览器是在每一个macro执行完统一清空micro的队列。而node中microtask会在多种阶段下执行。(这里说的并不是很完善,因为本身node用的也不熟了解很少)

啥是 event loop,有哪些macrotask 有哪些 microtask?

  • 常见的macrotask有:setTimeout,setInterval,requestAnimationFrame,I/O,UI rendering
  • 常见的microtask有:promise.then,MutationObserver

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值