首页 > 其他分享 >js的原理(运⾏机制)

js的原理(运⾏机制)

时间:2024-08-11 17:24:15浏览次数:13  
标签:异步 队列 主线 js 任务 栈中 原理 机制 对列

⾸先js是单线程运⾏的,在代码执⾏的时候,通过将不同函数的执⾏上下⽂压⼊执⾏栈中来保证代码的有序执⾏。 在执⾏同步代码的时候,如果遇到了异步事件,js引擎并不会⼀直等待其返回结果,⽽是会将这个事件挂起,继续执⾏ 执⾏栈中的其他任务 所有任务可以分成两种,⼀种是同步任务(synchronous),另⼀种是异步任务(asynchronous)。

同步任务指的是,在主线程上排队执⾏的任务,只有前⼀个任务执⾏完毕,才能执⾏后⼀个任务;

异步任务指的是,不进⼊主线程、⽽进⼊"任务队列"(task queue)的任务,只有等主线程任务执⾏完毕,"任务队 列"开始通知主线程,请求执⾏任务,该任务才会进⼊主线程执⾏。

当同步事件执⾏完毕后,再将异步事件对应的回调加⼊到与当前执⾏栈中不同的另⼀个任务队列中等待执⾏。 任务队列可以分为宏任务对列和微任务对列,当当前执⾏栈中的事件执⾏完毕后,js 引擎⾸先会判断微任务对列中是 否有任务可以执⾏,如果有就将微任务队⾸的事件压⼊栈中执⾏。 当微任务对列中的任务都执⾏完成后再去判断宏任务对列中的任务。

异步运⾏机制如下:

(1)所有同步任务都在主线程上执⾏,形成⼀个执⾏栈(execution context stack)。

(2)主线程之外,还存在⼀个"任务队列"(task queue)。 只要异步任务有了运⾏结果,就在"任务队列"之中放置⼀个事件。 arguments 的对象 V8 引擎的垃圾回收机制 垃圾回收机制的两种⽅法

(3)⼀旦"执⾏栈"中的所有同步任务执⾏完毕,系统就会读取"任务队列",看看⾥⾯有哪些事件。 那些对应的异步任务,于是结束等待状态,进⼊执⾏栈,开始执⾏。

(4)主线程不断重复上⾯的第三步。

标签:异步,队列,主线,js,任务,栈中,原理,机制,对列
From: https://blog.csdn.net/2201_75773271/article/details/141108381

相关文章

  • USB Type-C的工作原理与技术分析
    USBTYPE-C更加深入的应用,是从USB3.1开始的,这是因为从USB3.1开始,USB的功能开始变得更加丰富起来。USB3.1基本规格有SS字样的代表支持PD,有SS和10的USB标志代表支持USB3.1及PD2.0历代USB输出功率及标志比较本图来源于:https://www.datapro.net/techinfo/what_is_usb_type_c......
  • 基于nodejs+vue紧急自救知识教学与交流平台[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着自然灾害与突发事件的频发,提高公众的紧急自救能力已成为社会关注的焦点。在数字化时代,虽然信息获取渠道多样,但针对紧急自救知识的普及与教学质量参差不......
  • 基于nodejs+vue进口零食销售网站[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码毕设程序文件开题报告内容研究背景随着互联网技术的飞速发展和全球贸易的日益紧密,跨境电商已成为连接消费者与世界各地优质商品的重要桥梁。近年来,进口零食以其独特的口味、新颖的包装和丰富的品......
  • 基于nodejs+vue酒店管理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展和消费者对于住宿体验要求的不断提升,酒店业面临着前所未有的挑战。传统的酒店管理模式在应对客户多样化需求、提升服务效率及优化资源......
  • JSP过程管理系统ct79v(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:学生,导师,公告,毕设题目,毕设选题,毕设任务书,开题报告,中期检查,毕业论文,论文成绩,答辩通知,答辩成绩技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP......
  • 一文搞懂通信原理:从消息符号到信号波形
    通信原理1.信息论基础1.1信息、信号、消息1.2信息的度量2.通信系统2.1仙农通信系统模型2.2数字通信系统2.3信号2.4消息、字符、比特、码元、数字波形2.5信息速率与码元速率3.信源编码与信道编码3.1信源编码3.2信道编码4.数字信号传输4.1基带传输4.2频......
  • JSP公文审批流转系统22z82(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:部门,部门经理,普通员工,公文类型,公文申报,通知公告技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据......
  • kubernetes-POD的基本原理
    目录什么是POD?POD有以下特点:为什么使用POD作为最小单元,而不是container为什么允许一个POD里有多个容器POD中如何管理多个容器POD的yaml格式定义配置文件说明如何使用PodPOD的持久性和终止Pause我们首先在节点上运行一个pause容器然后再运行一个nginx容器,nginx将为localhost:2368......
  • JS杂记
    数据类型:值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。引用数据类型:对象(Object)、数组(Array)、函数(Function)。 js中的闭包:  Javascript语言特有的"链式作用域"结构(chainscope)子对象会一级一级地向上寻找所有父对......
  • .NET 8.0 中使用 JWT(JSON Web Token)进行身份验证和授权
    在.NET8.0中使用JWT(JSONWebToken)进行身份验证和授权,通常需要以下几个步骤:安装必要的NuGet包:Microsoft.AspNetCore.Authentication.JwtBearer配置JWT认证:在Program.cs或Startup.cs中配置JWT认证。生成和验证JWT:创建一个方法来生成JWT。在控制器中使用JWT......