js事件循环 事件轮询 event loop

总结了网上的一些有关event loop的资料

虽然负责解释和执行js代码的线程只有1个,但是浏览器内部还有其他线程来专门负责异步任务的,比如定时器,UI,事件,网络等专门线程来负责相关任何的处理。

image

  1. step1:主线程读取JS代码,此时为同步环境,形成相应的堆和执行栈;
  2. step2:主线程遇到异步任务,指给对应的异步进程进行处理(webAPI);
  3. step3:异步进程处理完毕(Ajax返回,DOM事件处理,Timer到时等),将相应的异步任务推入任务队列;
  4. step4:主线程执行完当前代码时,都会检查异步任务队列中是否有任务需要执行,如果有,则取出一个任务推入主线程处理(先进先出);
  5. step5:重复执行step2、3、4;称为事件循环。(如何处理异步队列中的代码碰到了异步代码,那么再次交给浏览器中的其他线程,然后跳过这些执行,直到当前代码段结束,然后检查异步队列,如此循环往复。。。所以叫事件循环。)
    执行的大意:
    同步环境执行(step1) -> 事件循环1(step4) -> 事件循环2(step4)…

image

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值