最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 如何在5分钟内和面试官说清楚“事件循环”?

    正文概述 掘金(我是970)   2021-08-07   522

    这是我参与 8 月更文挑战的第 1 天,活动详情查看:8 月更文挑战 8 月更文挑战

    背景

    开门见山的说:大家在前端面试过程中肯定都被会被问到事件循环事件循环我们都懂,但是这一个抽象的概念,总觉得自己说不好,说出来不够直白,没能让面试官 get 到我们的点

    楼主就是这样的(哈哈哈哈 ?)

    所以今天下定决心来总结:如何在 5 分钟内说好事件循环,给大家提供一个参考答案

    我们先把几个基本的概念给复习一遍

    基本概念

    首先,我们要说清楚事件循环,我们必须了解 javaScript 的工作机制,掘金上有很多作者说得很详细哈,我们今天就简单的来说

    javaScript 是单线程

    javaScript 这门语言在诞生之初,就是为了 GUI,为了我们的网页而生,提供用户一些基础的操作,设计为单线程也正是因为上述的大部分原因。单线程的设计在这类场景中效率相对更高。

    那为什么设计为单线程,效率会更高呢?

    我们采用反证法来说明

    • 我们知道 DOM 的渲染是同步任务,DOM 的渲染会阻塞单线程,但是也能保证页面的渲染是平顺的
    • 假设这个时候假设 javascript 设计为多线程,DOM 的渲染任务拆分为多个小任务分别放入了多个线程,而多个线程里不单单是 DOM 的渲染任务,还有其他的任务在排队,那最终的界面渲染的效果会存在一卡一卡的效果

    同步任务和异步任务

    同步任务很好理解,我们简单的写一写

    console.log('三点几了!做咩做?饮茶先啦')
    

    这就是一个同步任务

    那为什么会存在异步任务呢?

    在现实的场景中,我们的接口不会立即返回数据,或者我们期望一些代码在某段时间之后执行

    setTimeout(function(){
        console.log('做咩做!老细豆某会呔你滴啦')
    }, 60)
    

    上述的计时器就是一个很典型的异步任务

    执行栈和任务队列

    执行栈:执行任务的地方

    任务队列:存放异步任务的地方

    做工:在一段时间内,同步任务一开始就进入执行栈中执行,在同步任务执行完毕之后,执行栈会去查看任务队列中是否有异步任务?有,则取出来执行

    重复上述的做工的机制,不断地处理后续的任务,这个机制就叫做事件循环

    异步任务又分为宏任务和微任务

    • 宏任务会在下次事件循环的起始时刻被执行
    • 微任务会在当前的事件循环末尾时刻被执行

    (借个图,侵删) 如何在5分钟内和面试官说清楚“事件循环”?

    总结

    回到本文的题目:如何在 5 分钟内和面试官说清楚“事件循环”?

    下面是楼主总结的参考答案

    1. js工作机制是单线程的,但是任务有同步任务和异步任务之分
    2. 执行任务的地方叫执行栈,而异步任务会进入任务队列等待被执行
    3. 执行栈中的任务执行完毕之后,执行栈会去查看任务队列中还有没有未执行的任务。有,则拿出来执行;没有,则开始下一次的工作
    4. 重复第三点的工作,不断地处理后续的任务,这样的工作机制就是事件循环

    上述的四点说完,事件循环的工作机制就有了一个大致的描述

    面试官可能还会穿插一些问题,例如:

    • 为啥js是单线程的?为啥会有异步任务啊?
    • 说一说宏任务和微任务的区别?
    • 手写一道同步任务和异步任务执行顺序的题目的输出结果

    所以在面试中,还是需要我们对宏任务和微任务有针对性的训练,能动手做题实践和理解,那是最好不过的了

    最后

    文章的篇幅有限加上楼主的技术水平有限,错误的地方希望大家积极留言指出 ?

    好好学习不会差,我是你们的 970?

    你们的点赞是我进步的动力,大家一起进步!

    参考资料

    并发模型与事件循环 - JavaScript | MDN

    JavaScript 运行机制详解:再谈 Event Loop

    深入:微任务与 Javascript 运行时环境 - Web API 接口参考 | MDN

    [面试题:说说事件循环机制(满分答案来了)](juejin.cn/post/684490… "面试题:说说事件循环机制(满分答案来了 "面试题:说说事件循环机制(满分答案来了)")")


    起源地下载网 » 如何在5分钟内和面试官说清楚“事件循环”?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元