00:00
哈喽,大家好,这个条件的话,我们接着来推进promise的自定义封装,那么这个条段我们准备呢,对promise内部这个构造函数代码呢,向前推进一下,我们从哪个地方作为突破点呢?从这作为突破点。在实例化的时候呢,它传入一个实参,而我们在声明时呢,声明的一个刑参,所以在执行实例化的时候,实参会传给行参。也就是说,Executor会拿到这个函数。拿到函数之后呢?在promise的语法当中有这样的一句说明,就是执行器函数在内部是同步的。啊,执行器函数是同步调用的,那我们在这个内部应该如何去同步调用这个执行器函数呢?其实很简单,就只需要把它拿过来,后边加一个括号就完事了,这样子就可以完成调用好,调用是可以调用了,但是呢,还差点意思。
01:13
差在哪儿呢?注意观察。这个行参的函数在声明时接收了两声明,两个参数,两个行参,Resolve reject,那我们在调这个函数的时候呢,需要在里边传递两个实参。但是我们这儿没船。啊,没传肯定是在这儿不行的,为什么呢?因为你看这儿,人家这个参数还在内部调用的,所以说我们这儿必须得传一个参数。传啥呢,咱也不知道,先写上这个resolve和reject啊,先写上,但是写上之后呢,你就会发现一个问题,啥问题呢,在当前这个函数作用域当中啊,并没有resolve和reject这两个变量。
02:00
或者说是声明没有,那没有的话,那能行吗?当然不行,你可以看一下执行的结果。他会报错说,兄弟啊,Resolve is not DeFined,你这个玩意儿没有声明啊。所以接下来我们要对这个resolve和reject做一个声明,那么声明它到底是一个什么类型的数据啊?这也是个问题,我声明一个字符串,声明一个对象,这样单纯去声明可以吗?也不行,我们要去观察这两个数据在函数内部的一个使用。那么你会发现这个resolve啊,它是后边有括号的。明显它是一个函数类型的数据,所以说在这儿我们应该去声明。Resolve啊,然后下边那么洗完之后。完事了吗?并没有,还差点意思,哪差点意思呢,你注意观察这个resolve函数,人家在调的时候呢,里边接收了一个参数。
03:07
是一个食参,但是你看你这儿声明的时候呢,你没有行参。没有行参,待会儿你在执行时,在获取这个食参的时候就不方便。啊,你得变相去获取就很麻烦,所以为了方便呢,去获取这个食参,咱们应该在这儿呢,加上两个行参。候,这是resolve函数,下边这个呢是reject函数,这里有一个细节啊,防止大家我来我来给大家提一下,防止大家呢搞混,就是这个resolve和这个resolve他们之间。啊,是不是存在这种必然联系呢?就是必须要写呢。并不是。啊,你看啊,这是个行参,它名字其实可以随便写,你写A,你写B,你写ABC什么的都可以,而在这块呢,它是一个食参,它是个函数,独立函数,你把它写成B或者写成A可不可以啊,可以,你只要在用的时候呢,你也把它写成A,与之对应的或者是这样的一个B就可以了。
04:15
所以说,他们两个的名字并不是说一定要保持一致的。啊,是这样的一个情况,好了,到这儿呢,咱们的结构就是resolve和reject,咱们引了出来,并且把它们的结构也已经搭建成功了,咱们这个小节就先到这儿。
我来说两句