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

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

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

文章の目录

  • 一、事件循环的基本概念
  • 二、宏任务、微任务
  • 三、宏任务和微任务的执行顺序
  • 四、便于理解的生活场景映射
  • 写在最后

一、事件循环的基本概念

在js执行同步任务和异步任务的过程中,在主线程执行栈中的同步任务执行完毕就会,读取任务队列中的回调函数,将回调函数放到主线程执行栈中执行,执行完毕又会继续读取任务队列中的回调函数,放到主线程执行栈中执行,如此往复的过程称为事件循环(EventLoop);
【面试必备】事件循环(EventLoop)、宏任务微任务_第2张图片
注意:❗❗❗

二、宏任务、微任务

以上内容已经讲解了同步任务和异步任务的概念,javascript将异步任务又进一步划分成了宏任务和微任务;
常见的宏任务有:Ajax请求、文件操作、setTimeout、setInterval
常见的微任务: Promise的then、catch、finally方法,Process.nextTick;
【面试必备】事件循环(EventLoop)、宏任务微任务_第3张图片

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

在每一个宏任务执行完毕后就会去查找是否存在微任务,如果微任务存在就将微任务执行完毕再去执行下一个宏任务,以此往复;
【面试必备】事件循环(EventLoop)、宏任务微任务_第4张图片

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

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

写在最后

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

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

你可能感兴趣的:(JavaScript高级,面试,javascript,前端)