接下来我要讲解的内容是红任务与微任务。在扎巴 scrap 当中呀,他又将 e 部 api 呢分为了两种类型,第一种类型呢,叫做红任务,第二种类型啊,叫做微任务。首先我们来看一下,在扎巴 scrap 当中,哪些 e 部 a p i 属于红任务, 像定时器 sad interval, set tamat, sat immediate, 还有一些 l 操作,它都属于红任务。也就是说,在我们刚刚讲解的事件循环的六个阶段当中,每一个阶段所对应的这个一波 api, 它实际上都属于红任务。 接下来我们看一下哪些义部 api 属于为任务,像 promise 等, promister, catch, promise 呢,他都属于为任务。当然还有 processor, next tick 啊,他也属于为任务。 关于红任务与微任务,他们之间有什么区别呢?首先我们来看第一点,微任务的回答案数呀,会被放置在微任务的事件对列当中, 而红任务的毁掉函数呢,会被放置在红任务的时间对列当中。这是第一点区别啊,就是微任务和红任务他们之间的这个毁掉函数放置的位置是不同的。接下来我们看第二点区别。第二点区别呢,就是微任务的优先级要高于红任务。 当微任务事件对列当中存在可以执行的回调函数的时候呀,这个事件循环呢,在执行完当前阶段的回调函数后,会暂停进入事件循环的下一个阶段。 事件循环呢,会立即进入微任务事件对列,开始执行回答函数。当微任务事件对列的毁掉函数执行完成之后呢,事件循环再进入到下一个阶段,开始执行回答函数,这是什么意思呢?我们来看上面这张图, 事件循环呢,他是从 tymerce 这个阶段开始执行的,比如说现在这个事件循环呢,依次执行执行到了 io 轮巡阶段,在执行 io 轮巡阶段的这个毁掉函数的过程当中呢,突然呀,这个微任务事件队列当 当中呢,有可以调用的毁掉函数了,那这个时候呢,事件循环呢,会先将 io 这个阶段的毁掉函数执行完成,这个时候他不会进入到 check 阶段,他会立即进入到微任务事件队列当中,开始执行微任务所对应的这个毁掉函数。 当微任务所对应的这个回答来说,执行完成之后呢,他再进入到事件循环的下一个阶段,也就是 iopo, 他的一个下一个阶段就是 check 阶段好,那么这就是微任务高于红任务这样的一个含义。那么关于微任务,他本身呢,也有一个优先级,那么我们来看一下 微任务当中的 next tik 啊,它的优先级呢,要高于普通的微任务,那么在执行任务的时候呢,只有 next tik 中的所有回答案数执行完成之后啊,才会执行微任务时间对列,什么意思呢?注意看啊,在这我们标出了一个 next tick 和一个微任务事件对列, 那么实际上他们啊都属于微任务,但是呢, next 可他的微任务优先级要高于普通的微任务好,那么这是微任务,他本身 也存在一个优先级的问题。接下来我们看一下红任务哈,那么这个红任务呢,他不存在优先级的概念,那么不同的红任务的回答函数呢?被放置在了不同的红任务事件队列当中,那么红任务与红任务之间没有优先级的概念,他们的执行顺序啊,是按照视线循环的阶段的顺序执行的。 好,这就是咱们当下所讲解的什么是红任务,什么是微任务?他们之间有什么区别?那最重要的区别呢,就是微任务的优先级高于红任务,而微任务本身呢,他的 next 可要高于其他的微任务。
粉丝1711获赞5286

今天给大家分享前端面试当中的一个网红题,时间的绑定和微任务。红任务大家看这个代码非常的简单,我定了一个按钮,对吧?那么我给他分别绑定了两次事件,对吧?这是绑定一次,这绑定一次毁掉一里面他这个是有一个微任务, 对吧?微人物一,这里面有一个打印一,对吧?这地方有一个微人物二,那么打印二手动的给他 执行了一下这个点击事件,那么我刷新的时候,你看他的结果是一二为人为人为人二,对吧?一二为人为人,为人为人二,那么我清空我点击的时候,那他瞬间我就变了, 对吧?选择一啊,为人为一,二为人为二,大家知道什么原因吗?你们可以思考一下,那么接下来我给大家解释一下, 就是我点击的时候为什么他自行,结果他是这样的啊?比如说他一开始的时候,首先在这个浏览器执行的时候,他有一个红任务对列,对吧?还有一个函数的执行站啊,还有一个微任务对列,那么 我在点击这个按钮的时候,那么他会把这个当做一个靠派克,对吧?这个也是一个函数,对吧?我点击的时候,他会把这个当成一个完整的函数,对吧?靠派个一放到红人物队列里面,对吧?一样的,他也会放到这个这个二 这一部分,他也会放到火龙队这里面,那么我执行的时候,他把靠边个一先执行,他移到这个执行站里面执行,执行的时候他是从上往下执行的,他发现这靠边个一里面他其实有一个,他有一个微任务,对吧?那么他把微任务 就放到这个咱们的微任务队列里面,就他里面有个微任务,他就可以移过来,放到微任务队列里面,对吧?那么他就往下走,他就打印抗收,抗收一,那个红任务靠拍,靠拍个一,执行完了之后,那么他再去执行微任务队列,他要清空微任务队列,这时候微任务队列里面他只有一个微任务一嘛,所以就打印 这个微生物一,对吧?这时候他执行完了之后呢?让他再执行靠边二,靠边二,一到这个里面,他也是他发现有一个微生物队列,对吧?这个是二,那么他也放到微生物队列里面,对吧?然后呢?他再去,他再去执行 ctrl 二,对吧?那么打印的就是 ctrl 二, 然后微灯帽啊,然后呢?为什么在这个地方就是函数自制性的时候,在这是吧?自动绑定,自动出发的时候,为什么会出现这种情况呢?是因为 他这样,他把这整个的斯科瑞和这里面的东西,他都会当成一个那种,对吧?放到这个里面, 放到这个红人物堆里面,他当成一整个的一个红人物,嗯,当成整个一个红人物,那么他执行的时候,他就放到这个里面去执行,那么他看到康收一,对吧,他就答应 打印靠数一。如果是发现微任务了,就放到放到这个微任务堆里面,对吧?那么他再往下走,又发现微任务了,那么微任务二,那他就放在这个这个里面微任务二, 对吧?然后呢他又发现康叔二,康叔 low 个二,那么他就是一二,然后微人物队列根据先进先出的原则,那么先打赢微人物一,再打赢微人物二,所以说你首次进来的时候,他的结果就是这样,为什么就是说在这个用户点击的时候, 他会分成两个呢?对吧?大家肯定会有这种疑问,为什么我在这里面自执行的时候,他为什么就当成一个红任务呢?这就要说这个浏览器的这个这种机制, 他为了避免这种长时间的任务,对吧?对于这个用户和这个界面交互了这一块,他为了避免这种长时间的任务, 长时间任务他有可能导致这种主色,主色,所以说他尽可能的把这个任务进行拆分,也就是咱们常说的所谓的这种什么时间分片的概念,嗯,也就是说那个 rey 的圆码里面他也有这个概念,对吧?时间分片他怕这种长的任务分成这种小的任务, 哦,就是在这个地方手动点击的时候,他相当于会把这种同一个这种红人物他会分成小的分片,嗯,也可以理解为就是时间分片,不知道大家听懂没有?如果没懂可以评论区留言一块探讨。

红任务与微任务这个题目,这个题目本身不难,但是因为很多同学可能不是计算机专业的,所以 啊,当然这是一个点,然后还有本身 promise 没搞清楚啊,没搞清楚这些顺序,所以很多同学会认为这个东西是一个难点,其实只要你一些名词听过啊,然后 promise 把它整清楚了,这个东西不是这个东西就不是问题啊,这不是问题。 好,所以红任务微任务到底是什么啊?也没有那么玄乎,没有那么玄乎啊,乐哥用最简单的话给你去说就好了啊,那我们来听一听啊我们来听一听。好,首先要弄清楚这个东西啊,我们得先从什么?得先从进程开始说起。同学们啊,你看上来就你听不懂了 啊,你听不懂啊,当然了啊,晋城有他专业的这个说法哈,但是呢,呃,我在这里面能不能讲一遍 promise, 待会我会 提到,会给他复习,不着急。好吧啊,我们说的这个进程跟县城啊,是计算机两种执行的执行任务的一种,单位你可以理解啊。单位,那么说,说人话啊,说人话我听不懂对吧?说人话就是进程,你可以理解为一个正在进行的程序就叫进程。 同学们啊,有时候你的电脑卡死机了,你可以按一个什么,按一个 ctrl alt 加 delete, 把它按出来,结束进程。结束任务对不对啊?把这个进程结束掉啊。好,那这个叫什么?叫一个正在执行的啊,这个任务啊,这个一个正在执行的啊,叫做进程。 然后县城是什么呢啊?县城专业的说法,他说在操操作系统啊,能够进行运算调度的最小单位,其实你可以认为什么比晋城更小的一个执行单位就可以了 啊?还是听不懂,对吧?还是听不懂好,没有关系啊,没有关系,我再给你说一下,比如,呃,比如说咱们班上啊,咱们班上,呃,有两个组的同学,有两 组的同学啊,在跟着乐哥在做项目,对不对?好,那么,呃, a 第一组的同学在做 a 项目,第二组的同学在做 b 项目,那么我他们正在,都正在运行,都正在做,那么我们就相当于说,哎,乐哥开了两个进程,你可以理解为啊,乐哥开了两个进程 啊,好,那么在这一小组,在每个小组里面有有六个组员,那每一个组员都正在进行自己的任务,都正在写自己的模范, 那么每一个组员就是县城啊,每一个组员也是正在执行一些任务,对不对?我们说以组为单位啊,这个东西比较大,对吧?叫进程。那么每一个组员就是县城 啊,每一个组员就是县城啊,每个组员就是县城啊,所以县城会比晋城稍微,哎,你看起来稍微小啊,晋城是涉及到什么?涉及到 cpu 这一块的啊?好,那么,呃,因为可能有一部分同学不是在咱们这个计算机专业的啊,所以我 并不会说啊,专门说去用一些计算机术语去说啊,更听不懂了,对不对?所以我们在这里面就以这样的一个例子我来跟你说,其实还有比县城更小的单位,更小的执行单位啊,比如说这个组员他,他同时可以写两个模块,对吧?他,哎,一边写这个一边写这个模块啊,模块一一边写模块二他是不是在做多任务啊对吧?哎做第一个任务做第二个任务同时在做。 哎。那那个东西叫什么叫携程啊?听一听就行了啊听一听就行了,当成课外知识啊。携程这个东西是呃一些降级的一些名字啊这个携程啊携程降级的一些名词啊名词 携程啊就类似这种可能。晋城县城你听过携程啊是比县城更小的啊更小的啊,了解一下啊了解一下就可以了啊。这个东西不需要你会不需要你掌握啊,听一听就好了啊好。 然后这里面啊说到那 g s 应该有同学听说过对吧。 g s 是单线程啊,应该都听说过吧,朋友们这句话就听说过了啊。所以这个线程是什么?就是这里说的线程 哎都听过啊都听过好所以啊听过携程啊听过携程对携程比县城更小啊。他是代码层面的啊代码层面的好。所以啊这个 just kit 啊 just kit 这个他是单线城。为什么说他是单线城啊?但是跟跟这这门语言他本身之前出现的一个作用有关系, 就是他跟他之前啊出现的这个他之前出现是来干嘛的对吧? gs 最开始不是说我就能写 no 的对吧?啊就能够写这个什么呃呃其他的一些呃其他一些服务对吧?不是他一开始出现是来解决,比如说一些啊一些表达验证对吧?最开始啊,然后呃像什么一些动的一些操作用户交互等等这些。 那么如果哈在这里面老师讲定了一个例子啊,就是说如果有两如果说既然是能够同时去执行两个任务啊,你你,你把这个县城就执行,你就认为是两个任务就行了,他一边去操作这个洞,一边又要删除这个洞,同学们, 那这个东西就乱套了,对不对?所以这样的话啊,其实是不利于这个 gs 啊,他这个浏览器这一块啊,浏览器这一块啊,他的一个执行的是不利于他的执行啊,所以在这里面浏览器他不知道以哪一个线程为主,所以在这里面他是一个单线程啊,对他来讲是有好处啊,当然,当然不仅仅只是因为这样啊, 还跟他本身这门语言啊,他的一个解析器相关啊,所以这个你了解一下就可以了啊,咱们也没有说的那么,啊,不,不需要了解的那么深入啊,你知道有这个东西啊,知道有这个东西,所以说这个就是这门语言的一个特征。那么好了, 这下来了啊,就说那好,到底什么是微任务和红任务,对吧?我们说有回调任务的啊,有回调函数的啊,这个东西好,才有可能是红任务和微任务,那么并且他是义不执行的,注意,是义不执行的啊,也换句话讲,就是义不任务才能去分 红任务和微任务,其实我们刚才说的县城也好,进城也好,其实都是属于多任务啊,多个任务,我们说两个县城,其实就是两个任务, 就是这个意思啊,那到底是红任务还是微任务,我们怎么样去区分,对吧?啊?那么,呃,老师说了啊,在这里面其实并不是说我们要去区分,而是说系统已经帮我们分好了,哪一些是红任务,哪一些是微任务 啊?好,那只不过说我们将来从执行顺序上面或者执行特点上面会有一些差别,会有一些差别啊。那么我们来看一下啊。在这里面。 呃这里面说到啊说这个。呃。一些红任务有什么有哪些?有这个。呃渲染事件对吧?像动啊啊这个布局啊绘制啊等等这些是红任务对吧?网络请求,跟我们写代码相关的网络请求。因为这个东西是浏览器自己在做的嘛对吧? 呃跟我们相关的啊网络请求。文字啊,文件的一个读写啊文件的一个读写还有什么定时器啊,学过 no 的都知道我们有这个文件读写嘛,对不对啊。然后定时器啊定时器然后还有什么?还有啊用户交互事件对吧?用户交互的一项本选只要鼠标点击这些事件啊,因为 滚动放大出来等等接啊。好。呃还有什么?还有我再举了一些例子对吧?像一些一些代码层面的啊,比如说你写一对死亏标签这就是一个红人物 啊。这个是规标签里面要执行的东西就是一个红人啊。然后像什么声音特别有声声啊,对不对?像这些啊包括其他的你可能没听过的哈。没有关系啊,没有关系说明他少用啊少用好微任务呢微任务的话我们这里面啊这里面。呃你需要知道比如说 promise 点 slove resolve, resolve, 我想问一下大家哈 resolve 是成功执行还是失败去执行 啊。 resolve 是成功去执行还是失败去执行啊。这个应该是了解过 promise 的同学才知道,对吧?成功没错啊。好,所以大家还记得啊,还记得 resolve 是成功才去执行啊,好 promise 点灯啊,点灯,点灯,对吧?啊?我们 你知道不知道我们可以点灯,对吧?啊?去操作哦。呃,其他的啊,其他的你先不用管啊其他你先不用管啊?你先不用管。那我们今天重点在于说 pop me 是这一块啊,在说 pop 这一块,所以这些任务注意不是我们开发者啊,不是我们这个。呃,开发者自己去划分的啊。我说我这个方法叫就是红任务还是这个方法?就微任务这个东西是什么?是是浏览器, 在浏览器他的这个环境里面,然后他自己系统给他分的一个红润微任务。那么我们是怎么样去接定这个东西的?你先不用管,我们只要知道他的一个呃,执行的顺序是有差别的。 哎,对失败是理解的,没错啊,没错,好,所以是有差别啊,那么执行有他们的特点,我们只要把这些特点搞清楚了,那么这些面试题同人不在话下啊。

好的,我们来看一下一道前端的笔试题啊,我个人觉得考这种题呢,意义不是特别大,但是呢,稍微了解一下他的执行顺序也是好的。 呃,我们来看一下它里面的弯绕。那首先呢,我们知道在我们的 g s 中呢,是先要执行同步的,再进一步的,然后一步里边什么宏威任务之类这样东西啊, 行,然后清空了微认五三之下一个红,对吧?好,知道这样的一个流程就行了。好了,那首先我们我依次来看那这样的一个 sink, 然后方式 sink 一函数呢,是被调用时才会执行,所以说这个先不会执行,这个也不会执行,然后这儿的 ctrl 点 log, 那这个 ctrl log 肯定是先执行的,所以说呢,它是第一步 好,然后紧接着执行一个红任务,这个红任务呢,肯定是要放到同步和微任务之后的行,然后呢,这样呢,调用了 as sink 一好,那就会执行到这个地方,那执行到这以后呢,这个就是同步的第二步啊,然后其次呢,这有个 avit, 那这个 avit 呢, 是需要呃等待的啊,那所以说呢啊,等待这个东西执行完毕,对吧?那正好呢,这个啊,三个二呢,它是一个,呃,这个同步的,所以说呢,这一步呢,会先执行了好,然后紧接着 console log 啊,那这儿执行完毕以后,因为这儿呢,他会诞生一个微任务啊,所以说呢,他就会执行在下面的,这是第四步啊, 啊,因为我们知道 new promise, 它是一个对象,它是同步的,对吧?就是点 result, 它同步的,然后呢,这个点子,这个是一个为人物啊,然后呢,紧接着执行这个,这是五 好,然后执行的第一个微任务就是这,这是六,然后执行第二个微任务,这是七,然后最后执行这个 set time out, 这是八好,这是这个题的一个大概内容啊。

g s 当中的四点循环红任务为任务,对于初中级前端是一个很迷惑的东西,也是面试当中常考的一个点,今天咱们就用七行代码给大家讲明白,咱们从主线称执行的角度来给大家分析。首先我先画一个执行图,比如这个是主线程,那么咱们定一层魅力 啊,一般就是所谓的就是函数执行站,然后呢咱们再定义这个, 这是输出的区域,这边叫康守。还有一块就是对列,首先执行这代代码后,代码的末尾在第七行调用了太死的,所以主线城会将太死的函数压入这个占中 泰式的函数。当我们执行这个泰式的函数进行到第二行的时候,遇到了康数点绕个一,那么将一相当于他会直接打印在咱们的控制台, 也就是说这个地方是一。那么接着当我们执行泰式函数第三行的时候,那么遇到了三,他骂的那么三,他骂的他其实就是一个一步任务,那么这时候会把他放入到这个任务对列里面,也就是这个地方, 那么代码继续执行,执行到了第四行,这个也是一个义务任务,那么也会把它放到这个任务对列里面, 接下来执行第五行,那么康素点捞个四,那么他是一个同步的,毫无疑问,那么这个地方就输出的就是四。这个泰式的函数 都执行完了,所以这个泰式的函数会从这个吊用站中弹出,那么就会接着执行剩下的代码,也就是说这个吊用站会清空这个主线乘的吊用站清空之后,那么他会检查任用对立,那么这个任用对立 其实又分什么?红任务、微任务,那么这个时候你要明白哪些函数是红任务,哪些函数是微任务,那准确的说这地方应该再画一个对列,就是所谓的微任务对列,那么很明显,对吧?这个普方面是它其实是一个微认,那么这个时候会首先执行这个微任务对列, 也就是说他会执行这个地方,那么这地方就会打印三,对吧?微任务队列执行完了之后,再去执行这个红任务队列,红任务队列就是这个三他妈我所在的,那么这地方就很明显就会打印二, 至此,那么整个任务队列啊,活动队列和微动队列都执行完了,那么代码也就执行完了,所以说整个空台输出他是一、四、三二,当这个函数的备用战执行完之后,备用战他会清空,清空完了之后会先检查下面这个微任务队列 会有的话,那么把他怎么把他会压到这个吊用站中,那么执行这个微任务,直到这个微用队列清空,对吧?然后他弹出弹出之后,他再去检查这个红任务啊是否有 任务,那么这时候会把红任务压入这个电动站中,执行完这个红任务,把他弹出弹出之后,他再去检查微任务是否存在,那么微任务直接完了之后,他再去检查红任务,那么整个的这个过程重复的这个过程,那么就叫什么呢?就是事件循环, 因为他如果你在面试当中,面试官在考虑这个问题的时候,你就完全可以按照我的这种方式给面试官画出来,一边给他画一边给他讲,我相信 你。如果以这种方式给面上沟通,这个问题的回答百分之百是满分,最后再给大家留一个思考题,那么这两个函数它到底是红任务为任务呢?如果你们知道答案,欢迎打在评论区。


咱们做几个常见的面试题呀,来练习一下我们的红任务和微任务。哎,这注意,这全是科技于很活呀。来我们看一下,那这一段大码他执行的结果是多少呢?小伙伴们可以暂停一下视频,先看一下结果是多少。 好了,我们来慢慢分析一下。首先他代码会执行的是一个牛 per miss, 我们知道 pro miss 这个同步的任务,所以说直接执行里面的代码,看到了一个 resa 五一, resa 五呢是标记为成功,稍后呢会调用赠这个方法。那只不过 resa 五呢是不会停我们代码的,会继续往下执行。好了, 继续往下走,又发现了一个 nupromes。 好,那 poremes 呢,我们又发现了它是一个同步的任务,所以继续往下执行。执行了尾杂物二,又标记为成功。好了,那走了之后呢,又看到了一个点字,那也就说这个字你们的 dee 呢是一个二,那我们知道字是属于我们的一步的为任务,所以说呢,首先呢会把这个字 啊,然后这个微任务呢放到我们的微任务对立里面去,好给你们标注一下,其实呢,这呢是一个二。好,然后呢,我们把它放到微任务对立里面去,记住啊,是先进先出的原则。好了,大妈,继续往下执行呢,又看到第二个字, 其实呢,第二个字它里面希望是通过 resa 五一来进行调用的,因为我们一看就知道这两个 promes 是一个千套关系吗?所以说呢,这个字呢要比着上一个字呢是晚之型的,所以这个字他也是一个微任务。那只不过他里面存的结果呢是一是晚之型的,也就说他是排到我们二这个的后面来的。 好,这样呢,我们的微任务队列这已经拍好了,两个排队的。好了,那继续往下走,看到一个肯送的 logo 三,哎,这一个就是一个同步的任务喽,那同步的任务啊,哎,我们直接拿过来放到我们的执行站里面去执行就行了。好,到此为止,大码全部执行完毕了,那我们来看一看,那他打印的 结果,一次是首先知青战里面先打赢的,结果呢,是一个三,哎,好了,那知青战,知青完毕之后呢,已经清空了,现在呢,他要去唯一任务队列里面去看看。那唯一任务队列采取的四训呢,是先入先出的原则,二是排在前面的,所以说呢,再肯搜点 log 打印的 d 的是几啊?是二。 好了,那么这一个执行完之后呢,执行站再次来检查,还有一个对列好,然后呢,我们把这个呢再拿过来,那就是一,所以呢,最后打印的结果呢,就是三,二一。好了,那我们继续看第二个例子,小伙伴们同样也可以暂停一下视频来看一看。 好,我们分析一下这个执行的结果是多少。同样道理,我们从上往下依次执行淡码,先看到一个啃色的 logo 一一,哦,那我就明白了,他是一个同步的任务,所以同步的任务是放到执行站里面去执行的,所以拿过来接着呢,再来看一下,哎,是一个赛的,他们 out, 我们知道是一 一步任务,而且是一个红任务,红任务呢,是交给我们的速度环境去执行的,那我们会发现,其实呢,才塞得他们 out 呢,他这个时间呢是个零,所以说呢,是经过零毫秒呢,直接就可以执行的,所以说呢,他是经过零号秒之后呢,直接压入到了我们的任务对列里面去。 一种红任务,是不是要放到我们的任务队列里面去排队呀?啊?他这个零吗?所以说直接就放进来了。好了,那接着往下走的话,我们看到一个肯定的绕个幺四啊,幺四,这是个同步的任务,所以说呢,我们把幺四拿过来,好 把它放到执行站里面去执行,那这样的话,我们整个的这个代码就大概就看完毕了,看完毕之后呢,哎,我们知道在运行的时候呢,先去执行执行站里面的代码,所以说呢,先去执行的是一一,所以说呢,先打印了一个一一, ok, 然后呢再打印了一个一四。好了,那执行站里面代码执行完了,那微融队列里面是没有 代码的。然后呢再去看我们的任务队列去看看有没有红任务,那红任务里面还是有一个赛德探马 out 的好,我们拿过来之后呢,我们放大一下,那这个红任务里面其实又可以再进行新一轮的循环,哎,就是我们做实践循环了,那 代码往下执行,我们来看好了,那塞着他们奥特曼往下一走的话,看到一个砍色的绕个一二,我们知道这一看就是一个同步的人物,所以说呢,哎,他把这个代码呢放到我们的织金站里面去执行,再往下走,看到了个 nupromes, 我们一看知道他还是一个 恐怖的任务,所以说呢,大码继续往下走啊,瑞藏五幺三,那幺三呢?我们的标记为成功,那稍后就这样用,里面点赠,因为后面没有大码了,所以说直接就要用点赠,那赠呢?我们知道它属于一个 哎,微任务,所以说呢,他把这个微任务拿过来放到微任务对立里面去,那这个呢?是幺三。啊,幺三,因为瑞藏呢是幺三吗?所以说这里面二一 s 就 幺三。好,哎,把它放到微任务对着你们去,那再往下走的话呢,看到一个肯斯罗的幺五,啊,幺五,好,这样的话就可以把幺五给他拿过来了。好,那到此为止呢,我们这个 红任务的任务队列这个代码就执行完了,那我们再看这一次执行,那执行站里面先打印的是幺二,然后再打印的是幺五。 好,执行站的代码整个都执行完了,再回头看一看我们的微任务,微任务里面,哎,有一个是幺三,拿过来就可以了。好,那这样哦,到此为止我们整个大码全都执行完了,所以我们这个案例输出最后的结果就是一一一四,一二一五和一三。

呃,这节课咱们讲一下 gs 任务的分类啊。 呃,了解清楚任务分类以后啊,更容易理解这个事件循环。呃, gs 的 任务一共分,其实大类的话就分两两个两类啊,同步任务和异步任务。异步任务呢?又分红任务和微任务啊。 呃,咱们先说这个同步任务。同步任务是按照代码的顺序依次执行的任务,每个任务执行完成后才才会执行下一个任务。同步任务会阻塞代码的执行, 直到任务完成后才会继续下一条语句。同步任务是阻塞式的,意味着在同步任务执行期间,代码的执行会等待完成任务,不会进行其他任务的处理。 嗯,这就是对同步任务的一个嗯定义啊。常见的同步任务包括变量赋值、函数调用、循环、同步文件等、读呃,读写等同步文件的读写等。呃,需要注意一点啊, for ms 是 同步任务。 异步任务呢?异步任务是在执行过程中不会组塞代码执行的任务。异步任务会被提交给其他部分,如浏览器环境或操作系统进行处理,而不会立即返回结果。 相反,嗯, g s 引擎会继续执行后面的代码,不会等待异步任务的完成。咱们常见的异步任务啊,处理机制包括回调函数、 promise, i think i wait 等。啊, 那什么是红任务呢?红任务是指需要排队等待 gs 引擎空间时才能呃引擎空闲时才能执行的任务啊,那像定时器了,事件绑定、阿贾克斯等啊。 微任务。微任务是指在当前任务执行结束后立即执行的任务啊,它可以看作是当前呃任务的尾巴添加到。呃添加的任务啊,向着 promise 的 韧啊, 这些后续要处理的这些成功了失败以后要处理的这些操作都是属于微任务。 呃, g s 的 执行顺序啊,执行任务的顺序是同步任务,同步任务。先是同步任务啊,这是肯定的。然后是 如果同步任务执行完了以后有微任务的话,他会先把这个微任务,咱说他是他的任务的尾巴吗?先把这些尾巴先扫清楚了,然后再去呃这个任务列表里边去拿到红任务 啊,红任务执执行完了,如果里边还有尾巴的话,然后再去扫兴这个尾巴,这也是事件循环的一个概念啊。 好,关于这些概念的这总结啊。嗯,任务分类的总结咱到这里啊,下课。

哎,公馆还差多少档啊?我不差了啊。啊,你不差了,我罚你们三十号陪我排两个档到那个天花板三十号陪我排两个档。这个一个旋律。说下午。下午的时候啊,你说几点,你告诉我几点。呃, 你从反正是从十二点到下午的七点你应该都能见到我。十二点到七点我,对,找俩小时陪你。对, ok, 老大,咱俩可以统一下风格吗?到时候?可以啊, ok, 唱。唱啥歌吗?这么正经吗?这歌接了。哈哈哈,真接了,可以。行,妥了,走啊,管儿 中午好,我来陪党了,哈哈哈哈,准备唱什么啊?管来,中午好,烧歌吗?来,可以,妥了,辛苦管啊。起床了亲爱的弟兄们,一首夜南京。