首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Js篇-面试题9-请说一下Js中的事件循环机制

Js篇-面试题9-请说一下Js中的事件循环机制

作者头像
itclanCoder
发布2020-10-28 17:03:58
发布2020-10-28 17:03:58
1.2K0
举报
文章被收录于专栏:itclanCoderitclanCoder

JS 里的一种任务分类方式分为: 同步任务异步任务

虽然 JS 是单线程的,但是浏览器的内核却是多线程的,在浏览器的内核中不同的异步操作由不同的浏览器内核模块调度执行,异步任务操作会将相关回调添加到任务队列中

而不同的异步操作添加到任务队列的时机也不同,比如onclick, setTimeout, ajax 处理的方式都不同

这些异步操作是由浏览器内核来执行的,浏览器内核上包含 3 种 webAPI,分别是 DOM Binding(DOM绑定)network(网络请求)timer(定时器)模块

按照这种分类方式:JS 的执行机制是

  • 首先判断 js 代码是同步还是异步,不停的检查调用栈中是否有任务需要执行,如果没有,就检查任务队列,从中弹出一个任务,放入栈中,如此往复循环,要是同步就进入主进程,异步就进入事件表
  • 异步任务在事件表中注册函数,当满足触发条件后,被推入事件队列
  • 同步任务进入主线程后一直执行,直到主线程空闲时,才会去事件队列中查看是否有可执行的异步任务,如果有就推入主进程中

以上三步循环执行,这就是事件循环(event loop),它是连接任务队列和控制调用栈的


在面试当中事件循环机制问得也比较多,如果您有疑问,欢迎评论下方留言,一起学习探讨

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 itclanCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档