首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

前言JS是一门单线程语言,单线程就意味着,所有的任务需要排队,前一个任务结束,才会执行下一个任务。这样所导致的问题是:如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的觉。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...事件循环不属于js代码本身的范畴,而是属于js编译器的范畴,在js中讨论事件循环是没有意义的。换句话说,js代码可以理解为是一个人在公司中具体做的事情, 而 事件循环 相当于是公司的一种规章制度。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...事件循环不属于js代码本身的范畴,而是属于js编译器的范畴,在js中讨论事件循环是没有意义的。换句话说,js代码可以理解为是一个人在公司中具体做的事情, 而 事件循环 相当于是公司的一种规章制度。

75940
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    前言JS是一门单线程语言,单线程就意味着,所有的任务需要排队,前一个任务结束,才会执行下一个任务。这样所导致的问题是:如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的觉。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...事件循环不属于js代码本身的范畴,而是属于js编译器的范畴,在js中讨论事件循环是没有意义的。换句话说,js代码可以理解为是一个人在公司中具体做的事情, 而 事件循环 相当于是公司的一种规章制度。...两者不是一个层面的概念。2. 微任务、宏任务概念介绍微任务与宏任务就属于js代码的范畴js代码主要分为两大类: 同步代码、异步代码异步代码又分为:微任务与宏任务图片3....再依次执行第6行和第17行的两个微任务,打印3和97.微任务⾏结束,开始⾏宏任务setTimeout,打印11⾏的6.总结所有同步任务都在主线程上执行,形成一个执行栈(call stack)。

    77320

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

    前言JS是一门单线程语言,单线程就意味着,所有的任务需要排队,前一个任务结束,才会执行下一个任务。这样所导致的问题是:如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的觉。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...事件循环不属于js代码本身的范畴,而是属于js编译器的范畴,在js中讨论事件循环是没有意义的。换句话说,js代码可以理解为是一个人在公司中具体做的事情, 而 事件循环 相当于是公司的一种规章制度。...两者不是一个层面的概念。2. 微任务、宏任务概念介绍微任务与宏任务就属于js代码的范畴js代码主要分为两大类: 同步代码、异步代码异步代码又分为:微任务与宏任务图片3....再依次执行第6行和第17行的两个微任务,打印3和97.微任务⾏结束,开始⾏宏任务setTimeout,打印11⾏的6.总结所有同步任务都在主线程上执行,形成一个执行栈(call stack)。

    2.3K31

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

    前言JS是一门单线程语言,单线程就意味着,所有的任务需要排队,前一个任务结束,才会执行下一个任务。这样所导致的问题是:如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的觉。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...事件循环不属于js代码本身的范畴,而是属于js编译器的范畴,在js中讨论事件循环是没有意义的。换句话说,js代码可以理解为是一个人在公司中具体做的事情, 而 事件循环 相当于是公司的一种规章制度。...两者不是一个层面的概念。2. 微任务、宏任务概念介绍微任务与宏任务就属于js代码的范畴js代码主要分为两大类: 同步代码、异步代码异步代码又分为:微任务与宏任务图片3....再依次执行第6行和第17行的两个微任务,打印3和97.微任务⾏结束,开始⾏宏任务setTimeout,打印11⾏的6.总结所有同步任务都在主线程上执行,形成一个执行栈(call stack)。

    71620

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

    前言JS是一门单线程语言,单线程就意味着,所有的任务需要排队,前一个任务结束,才会执行下一个任务。这样所导致的问题是:如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的觉。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...事件循环不属于js代码本身的范畴,而是属于js编译器的范畴,在js中讨论事件循环是没有意义的。换句话说,js代码可以理解为是一个人在公司中具体做的事情, 而 事件循环 相当于是公司的一种规章制度。...两者不是一个层面的概念。2. 微任务、宏任务概念介绍微任务与宏任务就属于js代码的范畴js代码主要分为两大类: 同步代码、异步代码异步代码又分为:微任务与宏任务图片3....再依次执行第6行和第17行的两个微任务,打印3和97.微任务⾏结束,开始⾏宏任务setTimeout,打印11⾏的6.总结所有同步任务都在主线程上执行,形成一个执行栈(call stack)。

    87510

    caffe安装过程中遇到的问题以及解决方法

    解压缩后会消耗掉 0 B 的额外空间。 您希望继续执行吗? [Y/n] Y 正在设置 libboost-mpi-python1.54.0 (1.54.0-4ubuntu3.1) ......dpkg: 处理软件包 libboost-mpi-python-dev (--configure)时出错: 依赖关系问题 - 仍未被配置 dpkg: 依赖关系问题使得 libboost-all-dev...dpkg: 处理软件包 libboost-all-dev (--configure)时出错: 依赖关系问题 - 仍未被配置 因为错误消息指示这是由于上一个问题导致的错误,没有写入 apport 报告。...因为错误消息指示这是由于上一个问题导致的错误,没有写入 apport 报告。.../lib/dpkg/info 7. sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info 参考链接:  dpkg:处理 xxx (–configure)时出错解决办法

    1.3K70

    JS的分号可以省掉吗?

    起因 早上在实现一个功能的时候,写了一个map函数来复用部分代码。程序运行起来后,没有执行结果,而且没有报错。通过console.log打印数据发现,整个程序执行到map前面就再也不往下走了,很奇怪。...这么简单的代码为什么会出错呢?第一反应就是JS引擎将代码生成语法树的时候,可能解析不正确。于是,我在第一行末尾加分号测试。...console.log("hello, fundebug"); [1, 2, 3].map(i=>console.log(i)) 程序正确执行了: [passed.png] 这让我更加犯难,如果不加分号会导致程序出错...这是一个辅助性的功能,然后有一些情况要注意: 如果你这样写代码: return a + b 那么自动分号插入后会这样: return; a + b; 更可能导致隐含BUG的状况是: a = b + c...如果你不想用分号,又怕出问题,v2ex上有位童鞋给出了一个速记方案: 如果你写 JS 代码不喜欢带分号,而又搞不清什么时候必须加分号,可以这么做:在以 "("、"[" 、"/"、"+"、"-" 开头的语句前面都加上一个分号

    9K60

    熬夜整理前端高频面试题(已拿offer)

    两次不行吗?为了确认双方的接收能力和发送能力都正常如果是用两次握手,则会出现下面这种情况:如客户端发出连接请求,但因连接请求报文丢失而未收到确认,于是客户端再重传一次连接请求。...最后一次挥手中,客户端会等待一段时间再关闭的原因,是为了防止发送给服务器的确认报文段丢失或者出错,从而导致服务器 端不能正常关闭。...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...可以利⽤webpack的 UglifyJsPlugin 和 ParallelUglifyPlugin 来压缩JS⽂件, 利⽤ cssnano (css-loader?

    37430

    GayHub这8大超实用小技巧,99.9%的人都不知道!

    往下看,你一定会有所收获... 1. 使用“T”键快速查找文件 这个功能实在太赞了,但却只有少部分人知道。当你想看一个文件的内容时,按下“T”键,搜索文件名,竟然能直接跳转到目标文件。...链接到单行代码 有时我们希望希望通过一个地址就链接到特定的代码行。如下图所示 这种效果应该怎么实现呢?.../qianlongo/fe-handwriting/blob/master/17.quick-sort.js#L8) 相信你一定注意到了链接后的“L8”。...链接到多行代码 既然我们可以链接到一行代码,那可以链接到多行吗?当然可以了!!!...推荐一个chrome插件,名字是sourcegraph。 安装插件后,将鼠标放在使用该功能的位置时,会出现一个按钮。单击就可以跳转到定义它的位置。 ‍ 6.

    2.4K20

    MySQL进阶知识(最全)(精美版)

    (CURDATE(),interval -1 day) 2018-08-31 SELECT date_sub(CURDATE(),interval 1 day) 2018-08-29 获取上一个月...下一个月 SELECT date_sub(CURDATE(),interval 1 month) 2018-07-30 SELECT date_sub(CURDATE(),interval -1...month) 2018-09-30 时间计算差值(来计算精确年龄) TIMESTAMPDIFF(year,开始时间,'结束时间(当前)); 他可以返回一个 差值 MySQL事务:...事务⾏过程中出错, 会回滚到事务开始前的状态,所有的操作就像没有发⽣⼀样。也就是说事务是⼀个不可分割的整体,就 像化学中学过的原⼦,是物质构成的基本单位。 2....4 种事务隔离级别从上往下,级别越⾼,并发性越差,安全性就越来越⾼。 ⼀般数据默认级别是 读以提交或可重复读。 不同隔离级别的锁的情况(了解) ?

    2.5K21

    事件循环机制(Event Loop)

    JS中的Event Loop 众所周知 JS 是⻔⾮阻塞单线程语⾔,因为在最初 JS 就是为了和浏览器交 互⽽诞⽣的。...如果 JS 是⻔多线程的语⾔话,我们在多个线程中处理 DOM 就可能会发⽣问题(⼀个线程中新加节点,另⼀个线程中删除节点) JS⾏的过程中会产⽣⾏环境,这些⾏环境会被顺序的加⼊到⾏栈中。...⼀旦⾏栈为空, Event Loop 就会从 Task 队列中拿出需要⾏的代码并放⼊⾏栈中⾏,所以本 质上来说 JS 中的异步还是同步⾏为。...在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。...⼀个宏任务,接下来有异步代码 的话就先⾏微任务 所以正确的⼀次 Event loop 顺序是这样的 ⾏script主体代码,这属于宏任务 ⾏栈为空,查询是否有微任务需要⾏所有微任务

    73910

    用Node.JS分析steam所有的游戏!

    现在又出错了,那就说明返回的 JSON 数据有问题。 可以在代码里加一个print page看下,果然是None,也就是说根本就没拿到数据。 怎么回事呢?...Node.js 程序 Node.js 程序需要返回一个页面,因此需要编写一个 HTML 页面 OK,就是这些,涉及到很多东西,但是都不难。...编写一个 Node.js 程序 首先配置好 Node.js 环境以及 npm,不会的自行 Google。 这里用到了hapi,一个 Node.js 服务端框架,专门用来处理网络请求。...执行完这一步就可以了,现在用户可以访问你的 URL,请求会被发送到 VPS,VPS 上的 Nginx 接收到请求之后会转发给 Node.js 程序,这个程序会读取数字、替换占位符并返回最终的 HTML。...最后写一个 Linux 的 crontab 命令,每天半夜 12 点自动执行一遍这个程序: $ crontab -e # 执行之后会打开一个文件,在文件倒数第二行写入以下内容 0 23 * * *

    2.6K20

    Ffplay源码之read_thread解析(二)

    前言: 大家好,我是小涂,本周继续给大家分享ffplay中的read_thread这个线程源码的解读,这算是自己的一个学习记录过程吧。...interrupt_callback.callback = decode_interrupt_cb; ic->interrupt_callback.opaque = is; 这里设置中断回调函数,如果出错或者退出...当⾏耗时操作时(⼀般是在⾏while或者for循环的数据读取时),会调⽤interrupt_ callback.callback,那么就会调用这个回调函数decode_interrupt_cb::...下面我继续往下看代码: //特定选项处理 if (!...接着往下读: 这里可以根据用户来查找流,比如说,我们在播放的时候,可以指定音频流或者视频流、字幕流,可以用ffplay播放命令来指定: 下面是我在qt里面进行演示的效果: 我们接着往下读: 这里如果用户没有指定特定流的话

    56730

    Joe(念)主题编辑器使用自己图床-星泽V社

    前言: 目前很多人都在使用念改过(joe)的模板,念改过的模板的确有很多功能好用。 在此附上念修改版joe链接,喜欢的朋友可以试一下。...念修改版Joe 念他在joe编辑器里最后一个加了一个图床上传,可以一键上传到他的图床网站并且返回到自己文章里显示图片,这样呢我们就不需要给文件添加附件,图片就不用存到服务器里,用他的图床也很方便。...但是,我们还是喜欢用自己搭建的图床机进行上传,图片全部保存到github里边,这样即使念哪天网站备案掉了,想不开了跑了( 虽然不会 ),就造成了麻烦。...APP/DataBase.php 文件中的数据库连接, 将 Public 目录设置为运行目录即可 找到api位置,添加防跨站代码,代码自行百度 Joe(念)主题修改 在 Joe-master/assets.../js/custom.js 文件,具体位置请看图片,把接口换成自己的。

    96420

    实现Promise,有手就行巨详细,不看血亏

    ,单线程,异步,所以不管Promise执行完executor有没有结果,都会往下执行,执行到then,需要传一个或两个函数分别作为成功/失败结果的回调 这里采用回调的方式,在Promise的executor...this.exception = e // 只要有异常,都要将Promise的状态改为rejected(这样的reason就是报错信息了) reject(e) // 利用定时器,将抛出错误的操作延迟一个循环...then,再执行对应状态的回调; 但是,如果此时 _Promise.executor里的代码是异步的,比如resolve方法放在一个异步函数(比如,定时器)的回调里,而又因为js的事件机制,不会等到这个异步函数执行完成再去继续往下执行...,他回将这个异步函数的回调放到任务队列里,等主线程执行栈执行完成了再去执行这个任务队列里面的回调,因此,如果resolve方法如果在异步函数里,js就会将他放入任务队列,然后继续往下执行 因此,当js执行完...= e // 只要有异常,都要将Promise的状态改为rejected(这样的reason就是报错信息了) reject(e) // 利用定时器,将抛出错误的操作延迟一个循环

    66310
    领券