安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

浏览器事件环

11月3日 枯心人投稿
  简书文章链接:浏览器事件环简书1。什么是浏览器事件环
  我们知道,在javascript中,有定时器setTimeout、服务请求ajax、ui渲染、还有些Promise等,浏览器在解析这些代码时,不是同步进行的。比如setTimeout要等到时间到时才会执行,ajax要等到服务端响应后才会拿到返回数据。
  那么浏览器如何知道什么时候该去处理setTimeout或者ajax,方法就是,一轮一轮循环,这就形成了浏览器事件环。2。宏任务和微任务
  先明白这两个概念宏任务:ajax、setTimeout、setInterval、IO、事件微任务:Promise、process。nextTick3。事件环模型
  直接看图
  学习浏览器事件环,理解这一个图就行了
  解释下js所有代码先执行,遇到宏任务和微任务,就把他们交给对应的线程,各自在各自的线程里执行ajax、setTimeout、Promise等这些异步操作都有各自的线程,比如setTimeout在自己的线程执行,时间到时,会把回调放到宏任务队列中;同理,Promise等到then后,会把回调放到微任务队列中。第一步的js代码全部执行完成后,首先会清空所有的微任务。在第三步清空所有微任务队列时,此时还可能遇到微任务或者宏任务,也一样,将遇到的微任务加入到此时微任务的末尾,在此次清空微任务队列过程中加入的也会被清空掉,宏任务加入到宏任务队列。而后进行一次ui渲染从宏任务队列中取出第一个执行(每轮循环只执行一个宏任务,微任务是全部执行)宏任务代码执行时同样可能会再次遇到宏任务和微任务,遇到时再次将他们加入到对应的任务队列此任务执行完毕后再次取出微任务队列执行,再次清空微任务。渲染页面然后再次从宏任务队列中取出一个宏任务执行,如此循环直到任务队列全被清空记住下面两点就行
  每轮循环中,微任务全部清空,宏任务只拿出一个执行,是一个
  微任务清空后,是进行ui渲染,然后执行一个宏任务4。事件环实战document。body。style。console。log(1)Promise。resolve()。then((){console。log(2)document。body。style。})console。log(3);
  打印结果
  132
  另外:在页面中,是看不到红色视图的,只能看到绿色。因为先执行微任务,再进行ui渲染,微任务执行时,body的背景设置了green,覆盖red
  来个复杂例子setTimeout((){console。log(1);Promise。resolve()。then((){console。log(2);});},0);newPromise((resolve){console。log(3);resolve();})。then((){console。log(4);});Promise。resolve()。then((){console。log(5);})。then((){console。log(6);setTimeout((){console。log(7);},1000);})。then((){console。log(8);});
  打印结果34568127
  原因:遇到setTimeout交给setTimeout的线程执行,定时器是0秒,线程立即把回调放到宏任务队列中遇到newPromise,注意newPromise的回调是立即执行的,先打印出3,把then放到微任务队列中遇到Promise。resolve,把5放到微任务队列中主代码执行完毕,接着清空微任务微任务队列中,第一个放进去的是4,打印出4第二个微任务是5,打印出5,在执行5时,又遇到微任务6,加入到尾部队列中,接着执行6的微任务,打印出6微任务6执行时,遇到setTimeout,交给setTimeout线程处理,setTimeout线程会在1秒后把回调放到宏任务队列中微任务6执行完,遇到微任务8,同理也会一块清空8,打印出8此时微任务清空完毕,拿出一个宏任务执行,打印1宏任务1执行时,遇到微任务2,加入微任务队列中接着清空所有微任务,打印2setTimeout线程1秒后,把7加入宏任务队列中,最后会打印出7
  这个例子理解清楚,说明你对事件环掌握了,面试问完全没问题
  完
  如有错误,请指正,欢迎评论交流,只写干货
投诉 评论 转载

液晶电视摔坏了怎么办?液晶显示器简称LCD(LiquidCrystalDisplay),采用一种介于固态和液态之间的物质,具有规则性分子排列的有机化合物,加热呈现透明状的液体状态,冷却后出现结……什么是鸿蒙系统?明白这三件事就够了开源系统全新内核万物互联6月2日,华为官宣发布HarmonyOS2。惊艳众人的同时,给科技圈带来了一次史诗级信息大爆炸。无数关键词在各路APP上喷涌而出。开源系统?万物互联?这些到底……怎样把手机上的电视剧转放到电视上?虽然我们手机里装的东西越来越多,精彩的照片和视频、随意安装的视频应用等等,可手机屏幕太小了,不能全家人一起分享,也不如大屏看的爽快,怎么办?只需简单几步,小屏瞬间变大屏。……腾讯应届毕业生在600人的工作群怒怼管理层后,领导回应了来源:河南广电映象网1月26日,一位腾讯应届生因加班时间过长,忍不住在公司大群怒怼公司管理层后,登上了热搜,话题阅读量高达2。9亿。图源:东方IC25日深夜,……灵活就业后交社保会给什么证明呢?需要注意什么?按照灵活就业人员交社保需需要提供户口本、身份证,注意要去档案所在地所属的社保中心可以按照灵活就业人员缴纳社保的人员主要有(天津):1、具有本市户口的城镇居民或农业户口居民……中芯能卖给华为吗?序:一个人的成功不叫成功,一群人的成功才叫成功。同样一个企业的成功不叫成功,一群企业的成功才叫成功。我们不止有华为,还有几千家芯片设计公司,几百家设备材料公司。我们既要华为,更……浏览器事件环简书文章链接:浏览器事件环简书1。什么是浏览器事件环我们知道,在javascript中,有定时器setTimeout、服务请求ajax、ui渲染、还有些Promise等,……为什么苹果手机把后壳改成玻璃?苹果11以上的手机采用了无线充电技术,这个技术可以说在品牌机机型中苹果是最后一家采用。手机无线充电技术是日本夏普手机在2005年最先采用,苹果手机晚了整整10年。无线充电……狗狗太疯狂!印度最大加密货币交易所崩溃用户怨声载道近日,网红数字货币狗狗币交易量激增,并使印度最大的数字货币交易所WazirX宕机,随后,印度数字货币投资者们纷纷在社交媒体上抱怨交易和付款出现了延迟现象。据Coinmar……元宇宙你坐下让智能网联发言过去一年元宇宙概念的兴起,成为资本和产业关注的焦点,一定程度掩盖了汽车产业智能网联化快速发展的光芒。汽车产业正在经历百年未有之大变局。这话在汽车产业从业者耳朵里大概……苹果上架1。8米连接线卖949元!网友卖这么贵,是1秒就能充中国经济周刊经济网讯3月9日凌晨,苹果春季发布会推出全新外接显示器StudioDisplay,该产品随附一根1米长的雷雳4Pro连接线。根据苹果官网显示,新上架长1。8米的雷雳……特斯拉为什么抛弃毫米波雷达5月25日,特斯拉官方博客宣布,Autopilot正在过渡到基于摄像头的TeslaVision系统。从2021年5月起,北美制造的Model3和ModelY将不再配备毫米……
第一次去相亲,对方女孩开口就要苹果手机12,该不该满足她呢?realmeGT2Pro(8GB128GB5G版)怎么样?新造车开门红小鹏连夺月冠,蔚来未破万辆掉队了?华大北斗与中材贸易达成战略合作,共促北斗全球应用蓬勃发展华为鸿蒙系统升级到最新版2。0。0。236,手机出现发热异常互联网布局菜篮子?种子却被西方垄断,关键还得看任正非兄弟支付宝芝麻分750分以上都是什么人?有什么特别的用处吗?自吸发动机即将淘汰3缸发动机将成为主流特斯拉比亚迪成最大赢家鸿蒙OS最新内测名单公布,众多机型皆可申请,荣耀手机也能升级iPhone14规格被泄露,无缘A16处理器,价格是最大悬念vivoTWS2上手评测百元价位,千元体验爱奇艺裁员四成左右,两种离职赔偿方案,股价还一度涨了

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利