写关于js的执行机制

[Multisim][模电实验]简易函数信号发生器的设计与实现_北京邮电大学2019级信通院电子电路实验下 本文记述了笔者设计并实现以±12V供电电压输出1KHZ~10KHZ频率连续可调的方波、三角波和正弦波的过程。其中,方波输出电压峰峰值为12V(误差<20%),占空比可调、三角波输出电压峰峰值为8V(±20%),正弦波输出电压峰峰值≥1V。 阅读详情

这几天去面试,面试官都会问一些js执行机制

第一步宏任务执行,也就是script整体代码执行,把代码分为同步任务和异步任务,同步放在主线程里面执行,异步任务在event table中注册事件,等待主线程里面的代码执行完毕,才会回头来看event table里面有没有任务,如果有,就推进主线程里面。如下图所示:

 异步任务也有先后顺序,所以我们把他们分为宏任务和微任务

  • 宏任务 包含整个script代码块,setTimeout, setIntval
  • 微任务 Promise , process.nextTick

下面来玩玩实例: 

 console.log('1');
   setTimeout(function() {
     console.log(2);
   })
    new Promise(function(resolve) {
      console.log(3);
      resolve();
    }).then(function() {
      console.log(4)
    })

 执行结果是什么呢,我们来分析一下:

1.script整体代码执行,分同步任务,异步任务,这里注意的是new Promise是立即执行的,所以第一个阶段打印 1 3。

2.到微任务  .then 后面就是微任务,打印4

3.最后到宏任务setTimeout 打印 2   所以结果为1 3 4 2

下面再来复杂一点

console.log('1');
setTimeout(function() {  //time1
  console.log('2');
  setTimeout(function() {  //time3
    console.log('3');
  })
  new Promise(function(resolve) {
    console.log('4');
    resolve();
  }).then(function() {
    console.log('5')
  })
})
setTimeout(function() {  //time2
  console.log(6);
})
new Promise(function(resolve) {
  console.log(7);
  resolve();
}).then(function() {
  console.log(8)
})
   

1. 分析整体代码,相当一次宏任务,运行同步任务 打印 1 7

2.处理微任务,7 后面的.then是微任务,所以打印8

3.执行time1,打印2,又遇到一个宏任务time3,放在time2后面等着,发现new promise 立即执行 打印4,又发现一个微任务,.then ,打印5.没有微任务了,执行下一个宏任务time2

4.执行time2,打印6,没有发现微任务,执行下一个宏任务time3

5.执行time3 打印3

答案:1 7 8 2 4 5 6 3

经过两次思考,答案呼之欲出

js执行机制事件循环:

1、先执行主线程

2、遇到宏队列(macrotask)放到宏队列(macrotask)

3、遇到微队列(microtask)放到微队列(microtask)

4、主线程执行完毕

5、执行微队列(microtask),微队列(microtask)执行完毕

6、执行一次宏队列(macrotask)中的一个任务,执行完毕

7、执行微队列(microtask),执行完毕

8、依次循环。。。

cesium加载geotiff的 四种方法 本文介绍了在Cesium中加载GeoTIFF数据的两种主要方法。首先解析了核心前置知识,包括坐标系匹配、数据类型区分和性能优化。方法1详细演示了如何将RGB影像GeoTIFF转换为Cesium影像图层,包含从数据解析到Canvas转换的完整代码流程。方法2则针对高程数据(DEM)处理,展示了前端直接解析构建地形网格的方案。文章提供了完整的代码示例和关键实现要点,适用于卫星影像、专题图和数字高程模型等多种GeoTIFF数据类型在三维场景中的可视化需求。 阅读详情

相关推荐

Star CCM+ 202206 (17.04) 详细安装步骤

StarCCM+ 17.04 安装包和详细安装步骤

薛定谔的alpha狗 3万+

这一次,彻底弄懂 JavaScript 执行机制(写的非常好)

本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我。 不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。因为javascript是一门单线程语言,所以我们可以得出结论: *javascript是按照语句出现的顺序执行的* 看到这里读者要打人了:我难道不知...

qq_34117170的博客 1032

Backblaze 2025全年硬盘故障率报告解读

作为长期追踪存储行业动态的科技博主,每年/季度Backblaze的Drive Stats报告都是我重点关注的核心内容——不同于厂商发布的实验室数据,Backblaze以近13年、数十万片企业级硬盘的真实运行数据为基础,其年化故障率(AFR)、寿命趋势等结论,直接反映了硬盘在严苛数据中心环境下的真实表现,无论是企业存储选型还是个人高端存储参考,都具备极高的实用价值。2025年末,Backblaze发布了第13年的年度收官报告,涵盖2025年Q4、全年及终身硬盘可靠性数据。

存储随笔 4021

一、JS执行机制(不知道为什么开始写博客,大概是CV太累了吧~缓缓)

放在最前面 掘金上一个大佬关于调用栈堆的文章.他的文章比较详细风趣,图文并茂,以下只是我的学习历程 一、调用栈堆 1.js是单线程!单线程!单线程语言 2.js事件循环(直接上图) 同步和异步任务分别进入不同的执行"场所",同步的进入主线程,异步的进入Event Table并注册函数。 当指定的事情完成时,Event Table会将这个函数移入Event Queue。 主线程内的任务执行完毕...

费尼克斯基の研究院 222

RK3568/RK3588之修改8250驱动实现RS485收发的自动切换

在串口发送前,若为485,则将控制引脚拉为发送状态,在发送后,循环查看是否发送完成,若发送完成则将引脚置回读状态,如此一来,就能实现在内核测控制方向切换,而不会因为延时造成数据丢失,经过测试此办法可行。全部修改完成后,重新编译生成内核文件和设备树文件,烧写到板子上即可。

哒宰的博客 3120

维护测试监控LLM应用

LangFuse: 开源 + SaaS(免费/付费),LangSmith 平替,可集成 LangChain 也可直接对接 OpenAI API;LangSmith: LangChain 的官方平台,SaaS 服务(免费/付费),非开源,企业版支持私有部署;调试 Prompt 的 Playground测试/验证系统的相关指标数据集管理各种指标监控与统计:访问量、响应时长、Token 费等等。

SunnyRivers 1782

JS 延迟渲染

vain_soloist的博客 161

绕过Cloudflare的两种简便方案

绕过Cloudflare的两种简便方案

自成背后的博客 1万+

Javascript 异步实现机制

Javascript 单线程指的是在一个浏览器进程中只存在一个 Javascript 执行线程,所以任务需要顺序排列等待执行,而不能像 Java 等多线程语言一样并发执行。但是这种单线程模型在处理耗时的异步任务是会出现较长时间的线程阻塞,导致后续的任务不能被及时处理。所以在Javascript 中存在异步的处理方式用于处理这种情况,不过严格来说所谓的异...

weixin_34138377的博客 105

【华为OD机试真题】7、字符串筛选排序 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >输入一个由N个大小写字母组成的字符串 按照ASCII码值从小到大进行排序 查找字符串中第K个最小ASCII码值的字母(k>=1) 输出该字母所在字符串中的位置索引(字符串的第一个位置索引为0) k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引 如果有重复字母则输出字母的最小位置索引

KJ.JK 2267

DCNv4+YOLOv8:2024最新可变形卷积赋能目标检测,从原理到实战的科研级优化指南

从理解DCNv4“自适应变形卷积核”的核心思想,到亲手将其嵌入YOLOv8并验证在复杂场景的检测效果,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解目标检测中“特征自适应提取”的核心价值。现在就开始行动,相信你会在目标检测的“自适应特征提取”之路上,走出一条属于自己的技术路径。实验通常会证明:嵌入DCNv4后,YOLOv8在复杂场景下的检测精度提升3-5个百分点,尤其是小目标和遮挡目标的AP提升更为明显,而推理速度仅下降5%-10%(可通过模型量化进一步优化)。2024年最新推出的。

m0_64661770的博客 268

深入JavaScript之JS引擎如何执行JS代码

我们大概经常能听到“执行环境”、“作用域”、“原型(链)”、“执行上下文”等内容,它们都在描述什么? JS代码的运行 我们知道了js是弱类型语言,在运行时才确定变量类型。js引擎在执行js代码时,也会从上到下进行 词法分析、语法分析、语义分析 等处理,并在代码解析完成后生成AST(抽象语法树),最终根据AST生成CPU可以执行的机器码并执行。 除此之外,JS引擎在执行代码时还会进行其它处理,如 V8 中还有两个阶段: 编译阶段:该阶段会进行执行上下文的创建,包括创建变量对象、建立作用域链、确定 this

flying meng的菜鸟居 5986

【WorkBuddy从入门到精通实战教程】第 4 章 快速完成第一个 WorkBuddy 任务

摘要:WorkBuddy任务创建指南详细说明了从新建任务到结果验收的全流程。操作步骤包括:选择工作目录、设置模式(Craft/Ask/Plan)、指定AI模型、输入任务说明(需包含目标/输入/动作/约束/输出/验收6要素),可选配Skill等高级设置。文中提供三个入门示例:A)文件整理需保持原文件并生成分类方案;B)会议纪要要求结构化输出且所有内容有原文依据;C)Word转PPT需遵循品牌规范并控制页数。特别强调首次操作应在演练目录测试,处理真实数据前需确认授权范围,输出文件需检查涉密信息并按规范共享。(1

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 1382

JavaScript:从JS的执行机制到location对象

JavaScript语言的一大特点就是单线程,也就是同一时间只能做一件事。因为JavaScript是为了处理页面中的用户交互,以及制作DOM二诞生的。比如我们对某个DOM元素进行添加和删除操作,这个不能同时进行,应该先添加,后删除。这样也会有问题:如果JS执行时间过长,会造成页面渲染不连贯,导致页面渲染加载阻塞的感觉为了解决这个问题,利用多喝CPU的计算能力,HTML5提粗Web Worker标准,允许JavaScript脚本创建多个线程,于是就有了同步和异步。

2401_88226934的博客 1251

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

javascript执行机制

上图内容用文字表述的话: 同步和异步任务分别进入不同的“场所”,同步的进入主线程,异步的进入Event Table并注册函数 当指定的事情完成时,Event Table会将这个函数移入Event Queue 主线程内的任务执行完毕为空,回去Event Queue读取对应的函数,进入主线程执行,上述过程会不断重复,也就是常说的Event Loop(事件循环)我们将同步任务放在浏览器的主线程之上,只有前面一个任务执行完成之后才会执行后面的任务,异步任务是指 不进入主线程,而进入任务队列的任务。

m0_58398070的博客 1150

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【JavaScript】JS执行机制以及三种对象讲解

JS执行机制以及三种对象location、navigator、history方法的讲解

ztK63LrD的博客 835

JS的执行机制

JS的执行机制一. 什么是同步与异步(1) 同步(2) 异步二. 单线程(1) js是单线程三. process.nextTick与setImmediate方法(1) process.nextTick(2) setImmediate四.事件循环(1) 运行栈(2) 任务队列(3) 事件循环五.宏任务和微任务(1) 宏任务(2) 微任务六. promise和async函数(1) promise函数(2) async函数七. 测试题 一. 什么是同步与异步 (1) 同步 按顺序执行 //例子: consol

qq_41916791的博客 3966

javascript的执行机制

然后在这一轮宏观任务中,执行了其他相关可以直接console的语句之后,当发现微观队列中存在微观任务时,先执行微观队列中的任务,然后再反过来执行该轮的宏观队列中的宏观任务。读取到一个异步任务,首先是将异步任务放进事件表格(Event table)中,当放进事件表格中的异步任务完成某种事情或者说达成某些条件(如setTimeout事件到了,鼠标点击了,数据文件获取到了)之后,才将这些异步任务推入事件队列(Event Queue)中,这时候的异步任务才是执行栈中空闲的时候才能读取到的异步任务。

2401_87196705的博客 1452

JavaScript执行机制

知识点 1、场景分析 2、执行机制相关知识点 3、以实例来说明JavaScript的执行机制 4、相关概念 1、场景分析 /* 以下这段代码的执行结果是什么? 如果依照:js是按照语句出现的顺序执行这个理念, 那么代码执行的结果应该是: //"定时器开始啦" //"马上执行for循环啦" //"执行then函数啦" //"代码执行结束" 但结果并不是这样的,得到的结果是: //"马上执行for.

qq_38110572的博客 1494

写了这么久js,你知道js代码是在什么时候执行的么?

文章目录关于执行js程序延迟执行js文件异步加载js文件js代码块 关于执行js程序 浏览器在解析HTML文档时,将根据文档流从上到下逐行解析和显示。Javascript代码也是HTML文档的组成部分,因此Javascript脚本的执行顺序也是根据<script>标签位置来确定的。 提示:对于导入的js文件,也将按照<script>标签在文档中出现的顺序来执行,而执行过程是文档解析的一部分,不会单独解析或者延期执行。 注意: 一般情况下,在文档<head>标签中包含j

weixin_46351593的博客 3474

js执行机制

js执行机制 参考资料: 深入理解JavaScript运行机制 10分钟理解JS引擎的执行机制 JavaScript 运行机制详解:深入理解Event Loop javascript执行机制 想要理解JavaScript的运行机制,需要分别深刻理解以下几个点: JavaScript的单线程机制 任务队列(同步任务和异步任务) 事件和回调函数 定时器 Event Loop(事件循环) ...

好女绪的博客 3158

简述JS执行机制

JS执行机制 1、讲执行机制之前,我们应该先了解什么是JS中的同步和异步 同步:上一个任务完成才能进入下一个任务 异步:两个或者多个任务可以并行执行 同步任务:都放在主线程的执行栈 异步任务:JS的异步是通过回调函数实现的 异步任务的三种类型: 普通事件,如click、resize等等 资源加载,如load、error等 定时器,包括setInterval、setTimeout等 异步任务相关的回调函数添加到任务队列中(任务队列也称为消息队列) 执行机制 1、先执行执行栈中的同步任务 2、异步任务(

TutouPYY的博客 920

【JavaScript】JS执行机制及事件循环详解

JavaScript 是一种单线程语言,即它在同一时间只能执行一个任务。与多线程语言不同,JavaScript 的执行环境(如浏览器或 Node.js)只有一个主线程用来处理所有任务。这个单线程模型决定了 JavaScript 无法同时处理多个任务,因此需要通过某种机制来处理耗时操作而不阻塞其他任务的执行。JavaScript 的执行机制及事件循环是其处理异步任务的核心。通过理解单线程模型、同步与异步任务、事件循环、宏任务与微任务的执行顺序,开发者可以更高效地编写异步代码,从而提升应用性能与用户体验。

lph159的博客 1244

JavaScript的事件执行机制

文章目录一、js的内存模型二、js事件执行机制1.执行的整个流程:2.宏任务和微任务:常见案例: 一、js的内存模型 对于js内存模型的介绍,将会在接下来事件循环有更好的理解。 二、js事件执行机制 1.执行的整个流程: 所有同步任务都在主线程上的栈中执行。 主线程之外,还存在一个“任务队列”(task queue)。主要异步任务有了运行结果,就在“任务队列”之中放置一个事件。 一旦“栈”中所有同步任务执行完毕,系统就会读取“任务队列”,选择出需要首先执行的任务(由浏览器决定,并不按序)。 2.宏任

weixin_45921263的博客 2177

JS执行机制

函数调用是window调用。

qq_61990666的博客 1149

深入理解JavaScript的执行机制

既然js是单线程,那就像只有一个窗口的银行,客户需要排队一个一个办理业务,同理js任务也要一个一个顺序执行。Tips:简化讲:先执行一个宏任务(script同步代码),然后执行并清空微任务,再执行一个宏任务,然后执行并清空微任务,再执行一个宏任务,再然后执行并清空微任务…执行new Promise(),Promise构造函数是直接调用的同步代码,所以 console.log( ‘promise1’ )但是微任务2执行后,await async2()语句结束,后面的代码不再被阻塞,所以打印。

Hi,印象钟情 1025

等待异步执行完 再执行js语句_一文彻底吃透 JavaScript 的执行机制

执行 & 运行首先我们需要声明下,JavaScript的执行和运行是两个不同概念的,执行,一般依赖于环境,比如node、浏览器、Ringo等,JavaScript 在不同环境下的执行机制可能并不相同。而今天我们要讨论的Event Loop就是JavaScript的一种执行方式。所以下文我们还会梳理node的执行方式。而运行呢,是指JavaScript 的解析引...

weixin_39992417的博客 3125
上一篇: callBack && callBack()
下一篇: flex布局
Code源
博客等级 码龄7年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值