【面试必备】事件循环(EventLoop)、宏任务微任务

🥂(❁´◡`❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞

前言
javascript是一门单线程脚本语言,在执行任务时需要一个一个去执行,一旦遇到非常耗时的任务时,就会导致阻塞,造成程序假死现象。针对这个问题,javascript便将执行的任务分为两类,即同步任务和异步任务。在主线程执行栈中执行程序时,若遇到异步任务,便将异步任务交给异步处理器进行处理,异步处理器将已完成的异步任务的回调函数放到异步队列中,等待执行,当主线程执行栈中的同步任务执行完毕后,会读取异步队列中的回调函数,按次序依次执行。知道了同步任务和异步任务的概念,下面我们来了解什么是事件循环(EventLoop)
在这里插入图片描述

🥇 一、事件循环的基本概念

在js执行同步任务和异步任务的过程中,在主线程执行栈中的同步任务执行完毕就会,读取任务队列中的回调函数,将回调函数放到主线程执行栈中执行,执行完毕又会继续读取任务队列中的回调函数,放到主线程执行栈中执行,如此往复的过程称为事件循环(EventLoop);
在这里插入图片描述
注意:❗❗❗

🥇 二、宏任务、微任务

以上内容已经讲解了同步任务和异步任务的概念,javascript将异步任务又进一步划分成了宏任务和微任务;
常见的宏任务有:Ajax请求、文件操作、setTimeout、setInterval
常见的微任务: Promise的then、catch、finally方法,Process.nextTick;
在这里插入图片描述

🥇 三、宏任务和微任务的执行顺序

在每一个宏任务执行完毕后就会去查找是否存在微任务,如果微任务存在就将微任务执行完毕再去执行下一个宏任务,以此往复;
在这里插入图片描述

🥇 四、便于理解的生活场景映射

①小云和小腾去银行办业务。首先,需要取号之后进行排队;
⚫宏任务队列
②假设当前银行网点只有一个柜员,小云在办理存款业务时,小腾只能等待
⚫单线程,宏任务按次序执行
③小云办完存款业务后,柜员询问他是否还想办理其它业务?
⚫当前宏任务执行完,检查是否有微任务
④小云告诉柜员:想要买理财产品、再办个信用卡、最后再兑换点马年纪念币?
⚫执行微任务,后续宏任务被推迟
⑤小云离开柜台后,柜员开始为小腾办理业务
⚫所有微任务执行完毕,开始执行下一个宏任务

写在最后

宏任务、微任务是前端的经典面试题,请大家千万一定要认真理解,深刻记忆;

🥂(❁´◡`❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞

评论 64
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小二哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值