首页 > 编程语言 >记录在JavaScript中对事件循环的理解

记录在JavaScript中对事件循环的理解

时间:2024-04-19 13:33:05浏览次数:29  
标签:导演 演员 记录 JavaScript 循环 剧院 后台 前台

JavaScript 事件循环通俗解释

好的,用更通俗的话来说,事件循环就像是在一个大剧院里,有一个演员(JavaScript引擎)和两个重要的角色:一个是前台的表演者(调用栈),另一个是后台的候场区(事件队列)。

前台表演者:这个演员在前台表演,一次只能表演一个节目(单线程执行)。当一个节目(函数)开始时,演员就上台表演,表演结束,演员就下台(函数执行完毕,从调用栈中弹出)。

后台候场区:有些节目需要准备,比如换衣服、化妆等,这些准备工作不会在台上直接做,而是在后台候场区进行。这就是事件队列,异步任务的回调函数(比如网络请求的结果)会先在这里排队等待。

剧院导演:事件循环就是剧院的导演,它负责监督整个剧院的运作。导演会不断检查演员是否已经下台(调用栈是否为空),如果演员下台了,导演就会从候场区选一个节目放到前台去表演。

优先级:导演在选节目时,会优先考虑那些需要立即处理的小节目(微任务,比如Promise的回调),然后再考虑那些大型的节目(宏任务,比如setTimeout)。

不堵塞:因为演员不需要在后台等待准备工作完成,所以即使后台有很多准备工作要做,也不会影响到前台的表演,这就是非阻塞I/O。

剧院的效率:虽然演员可以同时处理很多准备工作,但如果后台的准备工作太多,也会影响剧院的效率,所以合理地安排节目(管理异步任务)是很重要的。

不同剧院的导演:不同的JavaScript环境(浏览器或Node.js)可能有不同的导演(事件循环的具体实现可能略有不同),但他们的基本工作方式是相似的。

所以,事件循环就是JavaScript世界中的导演,它确保了前台的表演(代码执行)和后台的准备工作(异步任务处理)能够有序、高效地进行。

标签:导演,演员,记录,JavaScript,循环,剧院,后台,前台
From: https://www.cnblogs.com/zhstudyroom/p/18145712

相关文章

  • 用Scanner交互 和 while 循环 制作简易计算器
    publicstaticvoidmain(String[]args){System.out.println("欢迎来到简易计算器!");Scannerscanner=newScanner(System.in);System.out.println("请输入要计算的第一个数字:");doublei=scanner.nextDouble();System.out.println("请选择操作:1:加2:减3:乘4:除&qu......
  • 前端如何使用Javascript实现一个简单的发布订阅模式
    在前端开发中,我们经常需要处理事件的订阅与发布,以实现组件之间的解耦和通信。本文将介绍如何使用JavaScript实现一个简单的发布订阅模式,通过分步写代码的方式,带领读者一步步完成实现过程。步骤一:定义EventEmitter类首先,我们需要定义一个名为EventEmitter的类,作为发布订阅......
  • JavaScript本地存储的方式有哪些
    Web存储技术1.localStorage特点:长期存储,除非手动删除否则会一直保存在浏览器中,清除缓存或卸载浏览器后消失。存储语法:window.localStorage.setItem(名字,值)获取语法:window.localStorage.getItem(名字)删除语法:window.localStorage.removeItem(名字)作用:删除localStorage......
  • 4月18日冲刺记录
    晨会1.人员:袁兴兰、齐飞跃、王瑞2.会议讨论袁兴兰:今天打算完成寻找免费api,完成博客的整理齐飞跃:今天打算学习调用第三方库或第三方api王瑞:今天打算画出安卓前端页面3.遇到的问题:调用摄像头报错,版本不兼容4.任务看板 ......
  • JavaScripts浮点数计算问题
    JS数学运算精度问题最近项目上JS做加减乘除这类的运算出现了精度不匹配的问题:例如:0.1+0.2->0.300000000000000040.3-0.2->0.099999999999999980.3*2->0.60.3*0.20.060.3/3->0.09999999999999999Mathjs这个JS库可以解决这类问题:官网链接以下是详细的步骤:终端执......
  • 引迈问题记录
    引迈问题记录功能设计设计普通表单时数据库表如何创建和设计无表:未设置数据连接时,在模板设计完成后发布模板,会自动进行数据表创建。主表:以“mt+功能ID”命名,子表以“ct+雪花ID”命名。有表:若需自定义选择数据表,下拉数据连接选择所需数据库后,在下方点击“新增一行按钮”,可进......
  • 淘宝记录笔记
    工具下载地址:https://mirrors.huaweicloud.com/java/jdk/8u151-b12/4月16麒麟server版本安装WPShttps://wps-linux-personal.wpscdn.cn/wps/download/ep/Linux2019/11719/wps-office-11.1.0.11719-1.x86_64.rpm?t=1713262545&k=982a8181c1879f75bd3f63f94348b89e1.导入密钥......
  • Docker学习记录
    docker官方文档https://docs.docker.com/engine/install/ubuntu/docker全球镜像仓库https://hub.docker.com/1、docker的安装1.1、卸载旧版首先如果系统中已经存在旧的Docker,先卸载:但是不同的系统,卸载方式不一样!!!Ubuntu系统:apt-getautoremovedockerdocker-cedocker-......
  • LibreCAD源码编译过程记录
    获取源码远程仓库https://github.com/LibreCAD/LibreCAD.git将源码从GitHub克隆到本地将仓库源码检出到提交节点:4b91d9b0f919be41f7e7568c87c5c67dfac189aa,这是LibreCADv2.2.0稳定版的提交节点,如果用更新的普通节点有可能编译出错(已踩坑)部署编译环境Qt5.9.7注意......
  • 毕业设计记录-1
    设计app界面......