00:00
下面一个来啊,下面一个呢,我们需要去看一下啊结啊一部里面的两种队列,红队列和什么呢?微队列。我们说我们异步执行的函数是都放到队列里面去执行,但是队列有两个队列,两个不同的队列,一个称为宏队列,一个称为微队列。那也就是说有的是放到红对里面去被执行的,有的是放到什么微对列里面去的,那就说红对列和微对是有差别的,对不对,你要没差别区分它干嘛呢?是不是,是不是这个图大家应该见过,但是你们那时候见到那个图应该是没有区分红队列和微队列。对吗?是不是一共有大的三个结构,这个代表的是GS引擎啊,它有堆和占子分对不对,对里面是不是放的是对象,这里面是在执行函数啊,那我在执行函数的时候。
01:08
执行函数的时候,是不是有可能执行一些,比如说启动了一个定时器,有没有可能。有可能吧,我发了一个二加请求,有没有可能,有可能我绑定了一个点击事件,有没有可能,有可能当我也有可能,是不是六了一个promise,启动了一个业务任务。是吧,那这些啊。都会啊,最后的最后里面包含都包含了什么呢?刚才我说的这一系列东西都有一个共同特点,里面都指定了异步执行的回调函数。能听懂吧,都去指定了异步执行的回调函数,那异步执行的回调函数它有个共同特点,都会被放到在合适的时机,都会放到放到哪个里面去,队列里面去,我们以前是不是可能以为是不是只有一个对应。
02:07
是不,现在我们说的是有两种不同的队列,有两个不同队列,一个称为宏队列,一个称为微队列,对吧?好,那哪些种类的回调函数释放到宏对应列,哪些种类的回调函数释放到V对列呢?通过这个图你来看一下。我们前面学过的都是红对立。为什么那时候没区分,就是因为我们以前学的都是红队列,动物世界毁调,而这毁调定时器毁调,哎,这些都是放在什么红队列里面,哪个是放到微队列里面呢?哎,今天我们啊,这两天学的谁promise的回调。看到了吧,还有一个叫mut写啊啊,其实这个都是简写,这是H5里面出的一个JS的新语法。
03:04
MN搜一下。啊,先搜下,但完整名字不叫叫MU observe observe什么意思?哦,不想吧。观察者。观察的没有推呢,是改变啊,只是一个改变的观者这个语法呢,是比较新的语法,现在暂时啊用的少,这里面就有一个什么扣派回调,这个回调函处如果也是一不执行的,它也是要放在哪个队列里面呢,V队列因为我们不怎么太用,所以说的时候主要说谁promise。当然,如果你有时间有精力,也可以把这个看一看,看它干嘛的。实际上它坚持的是标签属性的改变。啊好,来在这个地方,那也就是说啊,我们来写段代码来说一说这个事情。
04:08
哎,这个里面这个文件还没建,我建一个吧。我建一个文件啊,那我就写个幺零啊,等会把那个幺零改成幺幺就行啊,这个主要讲的是队列,两个队列,一个叫什么红队列。什么V对列啊,对应列对吧,点HT好,开始的时候没有内容啊,我得生成一个网页内容,是不是那一个一个这么写,那肯定是不可能的。当然在那个外里面是不是有个瞬间可以生成是吧,好来看好了,我就以谁为例呢,以定时器。和那个promise为例来说明这个问题,例比如说我们要启动一个电器,原时地是开的是吧,我指定一个零可以吧,可以吧,可以,那接着呢,我在这里面啊,我在这里面写一个打印输出。
05:15
可以吧,可以,这是不是太的回掉是吧,啊太后呗,行,而且延迟的时间是不是零秒钟,好没问题,而且我是先启动,可以吧,可以来再来new一个什么呢?啊promise不new行,直接来个promise点肉。一可以吧,接着是不是可以点认,当我明显知道是不是成功了,所以我直接写一个成功的回调是不是就可以,那我可以在这写个打印,这个是road的,可以吧,再打印应该有几一。
06:02
那这一个是不是promise的成功回调没问题,强调一下。都是异步执行的,而且是不是他先启动,按理说来说,也就是说大家知道啊,我执行这个代码。执行正在码那个GS,引擎就会将这个毁掉函数以及时间交给随机管理。前面应该说的是不是对应的定期管理模块管理。有人说老师他我怎么管理啊,它到了时间就将那个回调函数塞到队列里面去,是不是,那你说本质上我是不是这一个回调函数会立马。被塞到队列里面去,这个会什么?立即放入哪个队列?是不是关了红灯?我们刚才不分析了吗?是吧,而这一个也是这个是不是指定了一个成功的回调,而这个成功的回调,由于我这个是不是立即成功的。
07:07
我不就已经立马成功了吗?而且立马指定的回调函数是不是,那也就说我的这个回调函数呢,会立即放入什么队列?但是是不是也有先后顺序,是不是那个宏队列里面是不是先产生了一个回调函数,而V队列里面是不是后来添加了一个回函数,那现在问题了。谁先执行呢?是不是如果完全按时间的先后的话,是不是应该是上面的先执行,下面的后执行,对还是不对,对的。但是是不是后面的这一个,是不是才微对里面后方就限制就行了,那你说是不是有相同顺序,那你说如果如果我怎么着,如果如果我同样一种,哎,我这个再一个。
08:20
他是不是第一个方呢,它是不是第二个方呢?那或者说我把它也再来一个。你看这个。能看到吧,那现在你说谁先谁后啊。先打一个接着了,是接着了接着了。那也就是说同一种类型的有先后顺序是不是,那不同类型的呢,优先考虑谁呀?不一定那些谁的优先级高。
09:04
微对面里面的回调函数是不是优先得到执行是基本的理解啊,等会我们再说啊,具体它是怎么操作的,来看一下是不是呢?没有问题吧,没有问题。那好了,那。我们说过GS引擎它是单线程执行的吧,单线程执行是不是就一条线路,或者说在某一个时间点只能干一件事,对不对?那也就是说它的基本整体流程。分两步,第一步,先执行完所有的同步代码。你懂吧,把他们执行完了以后再干嘛。在执行我们队列里面的代码是不是回调函数,那有没有一种可能性啊,我的初始化的同步代码还没执行完,队列里面就有有回调函数了。
10:04
有可能,但他会执行去吗?不会,因为他就一条线路,他把那个路线呢,就逻辑是写死的。能听懂吧,只有将所有的同步代码执行完以后,才能执行队列里面的回调函数,那队列里面的回调函数优先执行谁呢?唯一对列好,现在相当于是不是宏对列里面有两个回流函数。两个定时器的回调嘛,是不是V对列里面是不是也有两个回调函数。那他先取出谁来资金。那微的列它一下子能取出两个吗?不来,那是不是一个一个取,先取队列里面第一个对列第一个也是最先放的。那个我们的promise的回调是不是那执行完它以后呢。执行它以后接着干嘛,执行第二个微队列里面的回调,是不是,那执行完它之后呢。
11:11
是不是在执行他。对不对,能不能。那在执行完它之后呢。你要注意啊,再进他接着是不是直行他。有一个事情。有个事情什么事,哎,我再写个代码看看啊,还没写我写一下。我来写一下啊,我这么做。我怎么做了?咔嚓一下。这个来个三。是吧,我这一个回调函数是不是本来是第三个执行的,对不对,那你说这一个三什么时候执行呢。
12:03
现在还差。是不是肯定是要在,至少我们应该知道在他在他他们俩之后吧,接着是不是在他之后,变着他走吧,你后面还还没做嘛,是不是,那问题就是。问题是什么?他说他们俩什么谁先?随后的问题是,还是不是?哎,我的我的那个第三个微微任务啊,微队列里面某一个元素称为微任务,就是个回力函数,那你说。他不放的停吗?他最后才放的对不对。他怎么还比那个破败啊先啊,这有点让人难受啊。
13:04
这个地方就有一个基本的一个事情来。有一个基本的一个执行啊的一个逻辑,不过我们先再把它过一下,接中用来存储执行回调函数对列包含两个不同队列对不对?一个我们称它为什么宏对列,一个称为微对列,宏对列有哪些种情况用的是宏队列?定时器动事件回调,而这回调we对列有哪些呢?Promise回调,Ation of observe的回调对不对?好那。下面GS在执行时候怎么区别这两个对应列的呢?它肯定要有一个套路吧。有没有顺序的?来引擎首先必须先执行完所有的什么输啊,同步代码,这个刚才说过了吧,执行完他们之后就执行什么。
14:02
是不是对应列里面的回调函数,对应列里面每一个回调函数都成为一个对列里面成为一个任务。也就是说,我们红队列里面某一个回调称为一个什么呢?红任务,而微队列里面某一个回调呢?V任务。能看懂吧,好,那它后面是不是要去取,我们现在应该理解了,是不是取微对理论微任务去执行。其实他是这样看懂,大家把这句话看懂。每次准备取出第一个红任务执行前,他要有一个保证,他要干嘛呢?他要将所有的微任务一个接一个的取出来执行。能听到吗?好,把我们刚才的,我们刚才写的这个代码。
15:01
啊,借助于这个图来说一遍就是。先执行完所有的初始化代码吧,但是初始化代码执行完了以后,是不是这里面有两个红任务,有个什么微任务。那你说他先执行谁,他是不是啊,在我刚刚说了,在准备执行啊,取出某一个红任务之行之前,先得把所有的微任务是不是一个接一个执行完,所以他现在干嘛去,他是不是执一个执行他,接着第二个是不是执行他,哎发现是不是全部执行完了,微任务干嘛去取出什么第一个啊,注意啊,这些活动务也是在主线执行的吧,它实际上应该取到。站里面去执行。能听懂,不都是取到这里面在主线执行的好,但是有个问题,在执行这个回调函数的过程中,是不是又向我的这个微对里面添加了一个什么任务。
16:05
那你说我能执行第二个红任务吗?不能,为什么呀,我们刚才说过了嘛,每次准备取出一个新的红任务之前,先得把所有的微任务一个接一个的什么啊处理掉,处理掉就是把回调函数从那边点取出来,在我们的站里面去执行。能不能听懂,所以最后的结果这个顺序能不能搞懂,可以可以,即使我的这个回调函数放的是不是最后放的没关系。是吧,跟放的先后顺序没有影响,能听懂吧。啊,大家需要这个是面试的时候是有可能很有可能问的。即使他不问你,你都要想办法跟他说。
17:07
啊,你要想办法跟他说,有人说老师怎么想办法说,那你就要想办法去引到这个上面来,只要问到相关的东西,你就要说起来了。啊,李老师我紧张的不行,是不是我咋说啊,我那是前期的时候,后期就不紧张啊啊。
我来说两句