前端面试题 - - JavaScript中事件循环(eventloop)_js事件循环面试题

前端面试题 - - JavaScript中事件循环(eventloop)

这篇文章主要谈一谈对js中事件循环的理解?eventloop

一、事件循环:

js是单线程的,但是又需要一种机制来处理多个块的执行,并且执行每个块时都调用js引擎,这种机制称为事件循环,与事件绑定概念毫无关系

二、事件循环分为三部分:

主线程、宏队列、微队列,所有异步代码都会被丢进宏/微队列

2.1 主线程

所有的同步任务都是在主线程里执行的,异步任务可能会在微任务(macro task)或者宏任务(micro task)里面

  • 同步任务: 指的是在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务。
  • 异步任务: 指的是不进入主线程,某个异步任务可以执行了,该任务才会进入主线程执行。
三、宏任务、微任务、执行过程
3.1、 JS把异步任务分为宏任务和微任务

在ES5之后,JavaScript引入了Promise,这样,不需要游览器,JavaScript引擎自身也能够发起异步任务。
在这里插入图片描述

3.1.1、同步代码(js执行/回调栈)
3.1.2微任务的异步代码(js引擎):

微任务是由JS发起的任务

  • process.nextTick(node)
  • promise.then() catch()
  • Async/Await
  • object.observe、MutaionOBserver
    promise本身同步,then/catch的回调函数是异步的
3.1.3 宏任务的异步代码(宿主环境):

宏任务是由宿主环境(游览器、Node)发起

  • script(代码块)
  • setTimeout、setInterval,setImmeditate定时器
  • I/O
  • UI redering
3.2、主线程只有一个,且执行顺序为:

主线程代码☞☞ 微任务☞☞宏任务
如果宏任务里还有微任就继续执行宏任务里的微任务,如果宏任务中的微任务中还有宏任务就在依次进行

1.先执行主线程
2. 遇到宏任务放到宏队列
3. 遇到微任务放到微队列
4. 主线程执行完毕
5. 执行微队列,微队列执行完毕
6. 执行以一次宏队列的任务,执行完毕
7. 执行微队列,执行完毕
8. 依次循环

在这里插入图片描述

3.2.1、 简略
  1. 同步代码
  2. 微任务的异步代码(promise等)
  3. 宏任务的异步代码

在这里插入图片描述

面试题

示例1:

#### 结束  

一次完整的面试流程就是这样啦,小编综合了腾讯的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析,分享给小伙伴们,有没有需要的小伙伴们都去领取!

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**

![](https://img-blog.csdnimg.cn/img_convert/45f2869b91b538dd3bb3290ba13bc806.png)

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值