ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ja_JavaScript_事件循环

2022-02-25 21:35:50  阅读:157  来源: 互联网

标签:面试题 队列 JavaScript js 任务 循环 线程 执行 ja


事件循环

image-20220225155456447

  1. js线程,也是主线程,主要执行js同步代码
  2. 然后遇到异步代码,比如说定时器,然后就会放到浏览器其他线程里面,开始计时
  3. 计时成功之后,这个js线程,并不会立即执行,
  4. 计时成功之后,其他线程,会把这个放到任务队列里面
  5. 而是js线程空闲的时候,就去任务队列里面看,有哪些需要执行的线程,然后取出来执行

宏任务队列和微任务队列

哪些是宏任务,哪些是微任务

image-20220225155602652

image-20220225155715765

执行规范

image-20220225155652965

面试题技巧

image-20220225155812330

  1. 划分出三列,主线程,微任务,宏任务
  2. 主线程,一定是先执行
  3. 然后执行微任务,最后宏任务
  4. 也就是说,在执行宏任务前,微任务队列一定被清空.

加入微任务队列的代码

  1. 我们都知道Promise的代码时加入微任务队列的.
  2. 途中11行到14行的代码,要等到第4行,resolve之后,才会执行
  3. 所以这部分的实际上,也是被加入到微任务队列里面了.

微任务的推迟

image-20220225160436629

  1. return普通值,正常加入微任务
  2. return一个Promise,推迟一个微任务
  3. return一个Promise.resolve(),推迟两个微任务

面试题1

问题

image-20220225183529519

解答

解答过程

事件循环面试题1.drawio

视频讲解

image-20220225191912107

面试题2

问题

image-20220225203534228

解答

图解

事件循环面试题2.drawio

面试题3

问题

image-20220225205021955

解答

图解

事件循环面试题3.drawio

标签:面试题,队列,JavaScript,js,任务,循环,线程,执行,ja
来源: https://www.cnblogs.com/zhuoss/p/15937844.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有