00:01
那上午我们已经讲到了那个更新状态和指定回流函数谁先谁后的问题啊,其中讲到有一点,有同学有个疑问,什么疑问呢?有这样一个问题。大家看到这里。啊,我们说。这一个33行是同步执行的,义务执行的。是不是同步执行的对不对,因为我们的这个回调函数是同步执行的,对不对是吧,那也就是说那个状态会立即改为什么成功是吧。点认是同步执行的业务执行的。同一点认,怎么能是异步呢?你点任何回调函数是两码事,你要区分开来对不对,点认识去指定回调函数的对不对,明显你这里面都点调用了,还怎么可能是同步了,还可能异步了对不对,肯定同步啊,能听懂吧,啊这个上面啊,尤其是也就是说我们是同步指定改的状态,同步指定的回调函数是不是。
01:19
那也就是说我们去调用回调函数的条件是不是已经满足了,你想想看嘛,状态也已经改了,是不是回调函数也已经有了,是吧,按说来说是不是立即马上立刻去执行回调函数,那也就是说有问题回调函数。这个回调函数。他是同步执行的,异步执行的。也就是说我现在不管你投保义务,我就说现在怎么证明。他是同步执行,异步执行。你说我写个什么代码可以证明在哪看守在哪一行,38行是吧,那怎么能证明啊,我是一的了。
02:21
怎么证明是,说白了是不是要证明这个函数成功的回调函数是异步的,如果成功的回调是异步的,那失败回调也是一的,对不对?现在条件都已经成熟了,已经达到了,对不对,按道理来说是不是立即执行呢。那一定是吗?如果这个函数是异步执行的,那就要放到队列里面才执行,对不对?而这一个代码需要放到队列里面执行吗?不需要。你要知道,GS引擎是先把初始化的同步代码都执行化以后,才执行回调代码。对,不才执行,我们毁掉队列里面取代码去执行是吧。
03:01
如果他先输出。他后输出,那就说明是异步的。对吧,好,我们来看一下它到底是同步一不是要打开浏览器啊,需要右键。是什么异步的?一定要把这个问题搞清楚啊,异步同步的区别。就是你要有一个能力能去判断这个事情啊,他到底同步异步的,你你可以不知道,你可以开始是不清楚的,对不对,但是我有办法来验证你。是这意思吧,啊,我知不知道这个是这个需要一定的记忆,需要我使用过才知道是不是,但是我有办法验证你,那只要我用你的时候,我就能判断出来。一个新的东西给你,一个新的语法给你,是不是啊,你用到了新的语法里面有个回调函数。
04:02
对吧,他也没说是同步异物,那你得有能力判断。是不是这个概念啊,所以说异步回调函数就是要放到对应链里面才会得到执行是吧,它是先条件都有了以后,是先放到对应里面去的,待执行。是这个意思啊,好,这个要知道啊,也就是说promise的无论是成功还是失败的回调函数永远是什么执行的,义务执行的,即使条件已经满足了,也不是马上执行,对不对。这个没问题啊,一定要搞清楚啊,你只有小点都搞清楚了,你才能把整个串联起来,最后去写啊,好,没问题,下面。这个问题呢,啊,是整个里面可能最难的一个,最重要的一个。啊,他说一个什么事情呢,来我拷贝一点代码啊,随便拷贝一点代码。
05:13
比如说我这里面调用了,那我的promise是不是就会成功,对吧,那我不要这个P了啊,我就直接点认。直接点任也是可以的,是不是,那我点任有成功的回调,有失败的回调啊,我这里面写个打印输出。这是UN的一。好,这个里面呢,把那个value也打印出来,好,下面呢,把那个失败的回调也打印一下啊换啊换一个写法,这个是直是reason。这个不是UN肉的,是什么UN rejected的,你一定要不断的念啊不断的念,OK,好,那后面我是不是还可以点认不是可以支持练习调用吗?是吧,好,那我在这里面呢,点任我把这一个拿一下。
06:10
把这个再写一遍,看V,好把这个值改一下。好,先来个简单的啊,不太复杂了,请问现在打印输出什么告诉我。啊,你说哪几行会输出啊,先说哪几行会输出,这里面一共有四行,有可能输出二四和什么31,好没问题,那第一个menu是多少。第二个Y点是多少?对吧,诶这个时候就来了,这因为这一个速字多少跟什么呢?跟谁有会受谁的影响,会会点任返回的promise的影响,对不对,也就是说现在大家已经知道了,点任返回的promise现在是成功的状态,对不对,只是成功的值,大家好像还有不同的意见,对吧。
07:09
这里面就有个事情。什么事情呢?点认返回的是返回一个新的方值,这个我们已经有定论了,是不是,那它的结果状态和值由什么决定呢?是不是概念由什么决定呢?也就是说点任它不是它是访问一个promise吧,所以我才能后面再点任嘛,是不是。是不,它的结果到底成功还是失败,就决定了会掉到哪个函数是不是好。如果它已经成功了,那成功的值是多少?有几个说安的?举下手,绝对是安的第二个。我的天呐,就就那么一个啊。还是挺恐怖的啊。
08:02
嗯嗯。是安迪fine。第一个没问题,第一个大家都没问题,所有人都知道。就是第二个啊,就有人不清楚了。好。来。嗯,那如果这个都不知道,那我就没有必要去改一个更难的了啊,我们先来看一看是一个什么意思啊,什么意思就是啊我们说。点认确实是返回一个promise,一旦返回了promise啊,那我们就知道它最终的状态结果值是不是由什么决定的。那显说首先得说,哎,你怎么决定他是一个成功的呢?你怎么知道这个点返回的promise成功了呢?啊的成功了哈,我改一下。好,现在呢?
09:05
好,刚才那个说那个同学说一下现在打印什么。先打印,哪行先说。28。32是吗?那为什么是32行?因为他他生成的对象就是一个。米是肯定是普罗米,关键是他的,你怎么知道他成功了呢?嗯。这很关键啊,这个时候首先肯定三十二十八行大家都应该知道是吧,那也就是说下面的哪个回答执行呢?不该是蒙的吧啊。啊,其实事情并不难啊,我来说一下啊,就到现在为止,你还不清楚他没有任何关系,没有任何关系,因为不是你今天去面试,而是你后面才面试,对不对啊,你要的是面试的时候知道,工作的时候知道,对吧,重点是面试的知道。
10:15
啊,好来。说一下。这里面有一种简单的表达。我这个点任它返回了一个新的平位置,是同时它是不是也指定了成功或者失败的回调,而这一个成功或者失败的回调到底谁用,是由点任决定的吗?不是,是由调用点的一个promise,它的结果通常决定了是不是由于前面六的这个promise最终是不是失败了,所以我这个失败的回调函数是不是执行了。也就说我的这个回流函数由前一个promise对象是不是决定,那我新的promise由什么决定呢?由这一个执行的函数执行的回调函数执行的结果决定什么意思啊,注意看看啊,我这里有一个简单的表达,就是有点任指定的回调函数由回调函数执行的结果决定。
11:14
也就是说,我点认返回的promise到底是一个什么状态,由它或者它执行的结果约定。自己怎么决定?我会在想,你先要知道这个事实,能不懂?好,下面说这个结果是什么,就导致于它变成什么状态呢?来看好了,看好了啊,刚才来先说一下我们刚才。刚才啊,看好了,我是执行的re,肉对不对,所以它执行了吧,是吧,那他也就是这个函数执行了吧,那这个函数它有抛异常吗?没有。
12:01
它是不是相当于。是不是那我的任返回的promise就会成功,成功的职位?能听到吧,我想我认返回的promise成功的职位应该怎么办?很简单嘛,你的值是不是就是我的结果值?试一试吧,不难吧,不啊,还很难啊,不来。是吧,没问题吧,我没有写return是不是犯的,所以这个值就哪里放的是不是啊,如果一个具体值,它是不是也是成功。但也不一定。啊,有很多种情况啊,我把这些情况都给大家列出来看好了,看好了比如说。
13:14
也就是我的一个什么。Orac能用什么?我是不是了一个成功职位三的成功的。那你说我最终的任返回的promise成功还失败成功,那成功的值是几啊?对,他用的是不是我成功的promise的值?看一下验证一下啊。对吧,好,那你说还有什么可能性。我还有什么可能性对,我返回的是一个什么失败的promise,那你说我要返回一个失败的promise,那最终我点任返回的promise成功,失败,失败,失败的结果为。
14:06
这都是你说的啊,我没说。是的吧,啊,你说对了,好,还有什么情况呢?是我抛了一个异常,但是不是,是不是L对象没关系,是不是我也叫抛了一个异常,只是我的异常现在是个数字五。听懂不抛什么东西本身不重要,主要是我抛了是吧。那现在你说我的promise是成功了,失败了,失败了你应该有感觉,而且失败的结果为几啊?是吧?那好啦。前面我们是不是简单的说那个点任返回的新的promise的结果由谁决定?
15:00
由是不是点任指定的回调函数执行的结果来决定,那它执行的结果是不是很多种情况,那我们是不是要把它情况都找出来,特别的情况。好,如果抛出异常呢。这个没什么好说的,肯定结果是什么?是不是失败了?就是变为rejected状态?是不是reason为谁了?我你抛出了异常,你抛出来是对象,那我就对象是不是你抛出来是个数值,那我是个数值是不是你抛什么,我收到什么。对吧?怎么做到是另外一回事,你先得知道结果,才有可能想着怎么实现。你结果都不太清楚,那你怎么写时间呢,对不对,好。那如果返回的是个promise的一个任意值,只要你没有抛异常,下面是不是说的是没有抛异常的情况,那没有抛异常,那你是不是最终要有个return的值,那个值分为promise和非promise,如果你是一个非promise的值。
16:06
那怎么着啊,那先决定是成功,失败成功,成功的结果为什么?就是你的这个值,当然这个字有可能是安,是不是?那如果你反馈的是个promise。那这一个promise的结果就会成为什么?返回了promise的结果,说白了,你成功我就成功,你成功的值是几,我就是几,对不对?你失败我就失败,你失败的原因是多少,那我失败的原因就是多少。是不是道理?这个是整个promise里面最难的一个,也就是说到时候我们去实现的时候也是最难的啊,包括去面试问的时候也十有八九是问这个。
17:00
而且如果啊,你主动跟人说,也是要说难的,而不说简单的。对吧,因为男的有说头啊,你简单的没什么说头。对吧,你面试的时候问你ES6的语法你好,你说怎么怎么着,那有什么意义,那有什么劲呢?是不是你好歹说点有说头的,有点难度的,你有难度才说什么?好。这个能懂了吧,这不是靠背的啊,就是这是非常合理的一一种处理,也就是说我点认指定的回调函数到底谁执行,是不是由调用点任的promise对象来决定,而我点任返回的promise由谁来决定?有这个函数执行的结果来什么,来决定是不是继续怎么走,是不是你这个函数,比如说你这个回答函数都执行失败了,那你的还成功,那不完蛋了吗?
18:04
那后面我是不是就无从知道你失败了呀?对。这也是啊。面试出现面试题关于编题的一些重点的位置,就是这种位置啊,好,这个要搞清楚。嗯。好,那这个呢,大家后后续重点把它弄一弄啊行。
我来说两句