首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

面试官:说说Event Loop事件循环、微任务、宏任务

事件循环不属于js代码本身的范畴,而是属于js编译器的范畴,在js中讨论事件循环是没有意义的。换句话说,js代码可以理解为是一个人在公司中具体做的事情, 而 事件循环 相当于是公司的一种规章制度。...方法里面的回调才是微任务图片(2). await右边的表达式还是会立即执行,表达式之后的代码才是微任务, await微任务可以转换成等价的promise微任务分析图片(3). script标签本身是一个宏任务, 当页面出现多个...执行Promise的then方法里的代码,打印63.微任务执行完毕后,最后执行定时器里的宏任务,打印2,3,4三.图片1.先执行主线程上的同步代码,打印12.执行第9行的函数,进⼊async1内部,async1...方法里面的回调才是微任务图片(2). await右边的表达式还是会立即执行,表达式之后的代码才是微任务, await微任务可以转换成等价的promise微任务分析图片(3). script标签本身是一个宏任务, 当页面出现多个...执行Promise的then方法里的代码,打印63.微任务执行完毕后,最后执行定时器里的宏任务,打印2,3,4三.图片1.先执行主线程上的同步代码,打印12.执行第9行的函数,进⼊async1内部,async1

74240

web前端开发初学者十问集锦(3)

单引号和双引号基本上没有区别,只是在同时使用的时候,有些细节要注意上面的细节; (2)js中支持字符串中包含变量,即”+var+”这种运算。...9.js无限循环定时器会执行吗? 这里涉及到window.setTimeOut和window.setInterval的异步性,以及js单线程的单线程问题。经常会出现在面试的过程中。...true; window.setTimeout(function (){ t = false; },1000); while (t){} alert('end'); 请问alert会执行吗...简单的来说就是定时器时异步加载的,而js是单线程的,在声明一个定时器之后,这个定时器会暂时保存在任务队列中,当js的同步代码加载完毕之后再执行任务队列中异步的定时器。...声明多个定时器的情况下, 定时器会按照interval的大小放入任务队列,然后依次执行.如果interval相同,那就按照声明的先后顺序执行.

1.5K20

前端面试中小型公司都考些什么

⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...⽤户浏览器接收到响应后解析⾏,前端 JavaScript 取出 URL 中的恶意代码并⾏。恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...如何实现浏览器内多个标签页之间的通信?实现多个标签页之间的通信,本质上都是通过中介者模式来实现的。...三者的区别如下:script 立即停止页面渲染去加载资源文件,当资源加载完毕后立即执行js代码,js代码执行完毕后继续渲染页面;async 是在下载完成之后,立即异步加载,加载好后立即执行,多个带async

73830

面试官:说说Event Loop事件循环、微任务、宏任务5

同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...事件循环不属于js代码本身的范畴,而是属于js编译器的范畴,在js中讨论事件循环是没有意义的。换句话说,js代码可以理解为是一个人在公司中具体做的事情, 而 事件循环 相当于是公司的一种规章制度。...方法里面的回调才是微任务图片(2). await右边的表达式还是会立即执行,表达式之后的代码才是微任务, await微任务可以转换成等价的promise微任务分析图片(3). script标签本身是一个宏任务, 当页面出现多个...执行Promise的then方法里的代码,打印63.微任务执行完毕后,最后执行定时器里的宏任务,打印2,3,4三.图片参考 前端进阶面试题详细解答1.先执行主线程上的同步代码,打印12.执行第9行的函数...3.回主线程中,遇到setTimeout(),加⼊到宏任务队列4.主线程继续往后⾏,前⾯说过,promise是同步代码,.then后⾯的回调会加⼊微任务队列,所以会打印13⾏的75.主线程⾏完成,开始

73020

面试官:说说Event Loop事件循环、微任务、宏任务

同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...事件循环不属于js代码本身的范畴,而是属于js编译器的范畴,在js中讨论事件循环是没有意义的。换句话说,js代码可以理解为是一个人在公司中具体做的事情, 而 事件循环 相当于是公司的一种规章制度。...方法里面的回调才是微任务图片(2). await右边的表达式还是会立即执行,表达式之后的代码才是微任务, await微任务可以转换成等价的promise微任务分析图片(3). script标签本身是一个宏任务, 当页面出现多个...执行Promise的then方法里的代码,打印63.微任务执行完毕后,最后执行定时器里的宏任务,打印2,3,4三.图片1.先执行主线程上的同步代码,打印12.执行第9行的函数,进⼊async1内部,async1...3.回主线程中,遇到setTimeout(),加⼊到宏任务队列4.主线程继续往后⾏,前⾯说过,promise是同步代码,.then后⾯的回调会加⼊微任务队列,所以会打印13⾏的75.主线程⾏完成,开始

1.8K31

面试官:说说Event Loop事件循环、微任务、宏任务_2023-02-28

同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...事件循环不属于js代码本身的范畴,而是属于js编译器的范畴,在js中讨论事件循环是没有意义的。换句话说,js代码可以理解为是一个人在公司中具体做的事情, 而 事件循环 相当于是公司的一种规章制度。...方法里面的回调才是微任务图片(2). await右边的表达式还是会立即执行,表达式之后的代码才是微任务, await微任务可以转换成等价的promise微任务分析图片(3). script标签本身是一个宏任务, 当页面出现多个...执行Promise的then方法里的代码,打印63.微任务执行完毕后,最后执行定时器里的宏任务,打印2,3,4三.图片参考 前端进阶面试题详细解答1.先执行主线程上的同步代码,打印12.执行第9行的函数...3.回主线程中,遇到setTimeout(),加⼊到宏任务队列4.主线程继续往后⾏,前⾯说过,promise是同步代码,.then后⾯的回调会加⼊微任务队列,所以会打印13⾏的75.主线程⾏完成,开始

81610

说说Event Loop事件循环、微任务、宏任务

同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...事件循环不属于js代码本身的范畴,而是属于js编译器的范畴,在js中讨论事件循环是没有意义的。换句话说,js代码可以理解为是一个人在公司中具体做的事情, 而 事件循环 相当于是公司的一种规章制度。...方法里面的回调才是微任务图片(2). await右边的表达式还是会立即执行,表达式之后的代码才是微任务, await微任务可以转换成等价的promise微任务分析图片(3). script标签本身是一个宏任务, 当页面出现多个...执行Promise的then方法里的代码,打印63.微任务执行完毕后,最后执行定时器里的宏任务,打印2,3,4三.图片参考 前端进阶面试题详细解答1.先执行主线程上的同步代码,打印12.执行第9行的函数...3.回主线程中,遇到setTimeout(),加⼊到宏任务队列4.主线程继续往后⾏,前⾯说过,promise是同步代码,.then后⾯的回调会加⼊微任务队列,所以会打印13⾏的75.主线程⾏完成,开始

68520

前端经典面试题(有答案)_2023-03-01

⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...文件小,是GIF格式的优点,同时,GIF格式还具有支持动画以及透明的优点。但是GIF格式仅支持8bit的索引色,所以GIF格式适用于对色彩要求不高同时需要文件体积较小的场景。...并行是微观概念,假设 CPU 中存在两个核心,那么我就可以同时完成任务 A、B。同时完成多个任务的情况就可以称之为并行。...以下是这个步骤的实现: // index.js if (navigator.serviceWorker) { navigator.serviceWorker .register('sw.js

1.2K20

2023秋招前端面试必会的面试题_2023-03-15

如果 JS 是门多线程的语言话,我们在多个线程中处理 DOM 就可能会发生问题(一个线程中新加节点,另一个线程中删除节点),当然可以引入读写锁解决这个问题。...三者的区别如下:script 立即停止页面渲染去加载资源文件,当资源加载完毕后立即执行js代码,js代码执行完毕后继续渲染页面;async 是在下载完成之后,立即异步加载,加载好后立即执行,多个带async...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...该技术可以让 GC 扫描和标记对象时,同时允许 JS 运行。清除对象后会造成堆内存出现碎片的情况,当碎片超过一定限制后会启动压缩算法。

93330

埋点统计优化,首屏加载速度提升

埋点统计在我们业务里经常有遇到,或者很普遍的,我们自己网站也会加入第三方统计,我们会看到动态加载方式去加载jsdk,也就是你常常看到的insertBefore操作,我们很少考虑到为什么这么做,直接同步加载不行吗...,我同步方式引入不行吗?不要定时器又会有什么样的结果?...同步加载(1846ms) 我们发现tj.js与app.js相隔的时间很少,且我们从火焰图中分析看到,Summary的数据是1846ms 综上比较,虽然同步加载依然比不上使用定时器的加载方式,使用定时器相比较同步加载...3、不使用定时器+insertBefore 执行顺序:app.js->tj.js 当我们知道在1中,app.js优先于tj.js 因为insertBefore就是一种异步动态加载方式 举个例子 <script...insertBefore方式,非常不建议同步方式insertBefore,这种方式还不如同步加载统计脚本 在特殊场景下,我们需要加载统计脚本,有基础信息的依赖后,我们也需要在业务代码使用统计,我们不要在动态加载脚本的同时使用

86320

【RTOS训练营】上节回顾、内部机制、中断管理和晚课提问

二:内部机制 在定时器任务阻塞的期间, 1.如果别的任务发来了定时器的各种命令:定时器任务会即刻被唤醒、去处理 2.如果一直没有别的任务发来定时器的各种命令,超时时间到了,定时器任务也被唤醒 这时候他就会去调用超时的...RT-Thread:在这个tick中断里调用定时器函数 Linux:在这tick中断里调用定时器函数 FreeRTOS: 在"定时器任务"里调用定时器函数 RT-Thread效率更高,但是必须约定:定时器函数要高效...所以中断函数要尽快执行完 在中断函数执行的期间,任务是无法执行的 不论从哪一个角度来看,中断函数都要尽快执行完 我们从头来讲吧,从头讲中断的处理过程: 1.task1正在运行,pxCurrentTCB向...1.task1正在运行,pxCurrentTCB向task1 2.按下GPIO按键,产生中断 3.task1的现场,被保存在task1的栈里 4.CPU使用另一个栈,就是中断的栈,开始执行中断函数 5...问 :tick中断 比 exti0的优先级更高,能够运行吗

73830

【JavaScript】 进阶教程 施工中~

线程是进程内的一个独立执行单元 是程序执行的一个完整流程 是CPU的最小的调度单元 相关知识 应用程序不许运行在某个进程的某个线程上 一个进程中至少有一个运行的线程:主线程,进程启动后自动创建 一个进程中可以同时运行多个线程...多进程运行:一个应用程序可以同时启动多个实例运行 ​ 多线程:一个进程内,同时多个线程运行 单线程与多线程 ​ 多线程: ​ 优点: ​ 能有效提升CPU的利用率 ​ 缺点: ​ 创建多线程开销...(内存中的对象) ​ 分线程: ​ 定时器模块:负责定时器的管理 ​ DOM事件响应模块:负责事件的管理 ​ 网络请求模块:负责ajax请求 ​ 其它模块:… 定时器引发的思考 定时器真的是定时执行吗...在主线程执行的,js是单线程的 定时器是如何实现的? ​...1000000; i++) { // 通过长时间循环延长定时器执行 } } JS是单线程的 1、如何证明js执行是单线程的?

1.3K30

2023秋招前端面试必会的面试题_2023-02-28

第二个是实现代码的逻辑提取与复用,当然mixin也可以实现逻辑提取与复用,但是像前面所说的,多个mixin作用在同一个组件时,很难看出property是来源于哪个mixin,来源不清楚,另外,多个mixin...通俗的讲: 没有Composition API之前vue相关业务的代码需要配置到option的特定的区域,中小型项目是没有问题的,但是在大型项目中会导致后期的维护性比较复杂,同时代码可复用性不高。...我了解的预加载的最常用的方式是使用 js 中的 image 对象,通过为 image 对象来设置 scr 属性,来实现图片的预加载。...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。

78320

深入理解Javascript单线程谈Event Loop

线程:线程是进程下的执行者,一个进程至少会开启一个线程(主线程),也可以开启多个线程。 2.同步和异步 同步和异步关注的是:消息(结果)通信机制。 同步:发出调用后,在没有得到结果前,该调用不返回。...JS引擎线程:负责JS的解析和执行(本文说的主线程就指js引擎线程)       定时器触发线程:处理定时事件,比如setTimeout, setInterval       事件触发线程:处理DOM事件...12.setTimeout(fn,0)是立即执行吗?...1、JS的执行线程(主线程)发起异步请求,浏览器会开一条新的HTTP请求线程来执行请求,继续执行栈中剩下的任务,   2、在新线程(HTTP请求线程)中,在执行请求的同时,浏览器会正常处理其他任务的执行...事件循环作为一个进程被划分为多个阶段,每个阶段处理一些特定任务,各阶段轮询调度。这些阶段可以是定时器处理,dom事件处理,ajax异步处理......

1.3K10

阿里前端常考面试题汇总

;(4)定时器触发进程 定时器触发进程即setInterval与setTimeout所在线程;浏览器定时计数器并不是由JS引擎计数的,因为JS引擎是单线程的,如果处于阻塞线程状态就会影响记计时的准确性;...因此使用单独线程来计时并触发定时器,计时完毕后,添加到事件队列中,等待JS引擎空闲后执行,所以定时器中的任务在设定的时间点不一定能够准时执行,定时器只是在指定时间点将任务添加到事件队列中;注意:W3C在...将DOM的多个读操作(或者写操作)放在一起,而不是读写操作穿插着写。这得益于浏览器的渲染队列机制。...rejected状态的回调,该参数可选)4、catch方法返回一个新的Promise实例5、finally方法不管Promise状态如何都会执行,该方法的回调函数不接受任何参数6、Promise.all()方法将多个多个...行行,且应该在 then ⽅方法被调⽤用的那⼀一轮事件循环之后的新⾏行行栈中⾏行行。

1.3K40

如何骚气的打开 web 页面录制与回放的黑盒子~rrweb

保证回放时⿏标移动流畅的同时也要尽量减少对应 Oplog 的数量,所以我们会做两层节流处理。...可以设置每 n 次操作后制作⼀次快照或每 n 毫秒后制作⼀次快照,从⽽将⼀个⻓的 Oplog 拆分为多个短的 Oplog。 回放 在确定了最终录制⽅案之后,我们就可以实现对应的回放功能。...我们在重建快照时将被录制的 DOM 重建在⼀个 iframe 元素中,通过设置它的 sandbox 属性,我们可以禁⽌以下⾏为: 表单提交 window.open 等弹出窗 JS 脚本(包含 inline...event handler 和 ) 这与我们的预期是相符的,尤其是对 JS 脚本的处理相⽐⾃⾏实现会更加安全、可靠。...对于我们的回放功能⽽⾔,这种不确定的推迟是不可接受的,可能会导致各种怪异现象的发⽣,因此我们通过 requestAnimationFrame 来实现⼀个不断校准的定时器,确保绝⼤部分情况下操作的重放延迟不超过

1.3K20

字节前端经典面试题(附答案)_2023-02-28

它是解析完一部分内容就显示一部分内容,同时,可能还在通过网络下载其余内容。...Chrome浏览器的架构图: 从图中可以看出,最新的 Chrome 浏览器包括: 1 个浏览器主进程 1 个 GPU 进程 1 个网络进程 多个渲染进程 多个插件进程 这些进程的功能: 浏览器进程:主要负责界面显示...、用户交互、子进程管理,同时提供存储等功能。...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...,将其加入到微任务队列,执行微任务队列,按顺序依次执行两个定时器,但是由于定时器时间的原因,会在两秒后先打印出timer2,在四秒后打印出timer1。

84550
领券