00:00
哈喽,大家好,这一个小节呢,我们来接着继续。我们准备要做一个功能,就是Z方法当中去执行回调。首先呢,在代码当中,我们先来用P这个promise对象呢,去调一下方法。把这个方法呢,咱们都加上啊两个回调。啊,看点log,成功就用log去输出。失败的话就用war警告去输出。好,首先先来看看内置的promise,它的一个表现。它是可以的。再来看看我们的可不可以。刷新。我们的是不行的,为什么咱们这个就不行的啊?其实原因很简单,就是咱们压根儿就没有对这个函数进行过调用。所以说它不出结果,那我们应该在哪去执行这个函数呢?啊,我们在这种情况下。
01:02
在同步任务情况下,这个回调执行应该在Z方法当中去调用。也就是在在这儿去调用回调函数。那么这个回调函数我们在调的时候呢,能不能直接去调这个呢?或者说我直接去调这个。可不可以呢?答案是不行的,为什么呢?因为我的状态它是不一定的。他成功咱们应该走第一个,也就是resolved,他如果失败呢,应该走第二个unre rejected。所以说这两个回调函数执行得要有条件。好了,我们来加一下条件。如果。做这个,然后再来,如果。走这个。往前呢,推进一下代码。那么我们说了啊,成功。
02:00
应该是走第一个,失败走第二个,那么成功的判断条件是什么呢?成功的判断条件应该是实例对象上边的那个。Promise state这个属性。那在Z方法当中,咱们应该怎么样去获取到promise state这个属性呢?在这儿我们也可以使用this。这个关键字来去对它做一个这样的获取。因为你大家可以看一下这个方法是谁调用的呢。这个方法就是这个方法是由P这个promise对象调用的,所以说在这个函数内部,This就是指向实例对象P的。所以说你在z.promise state其实就是获取的P这个对象他身上的promise state属性。好了,那么当我们在呃,判断条件啊,这会咱们没加完,应该是来一个负。
03:01
啊,Fulfilled。啊,如果你成功,咱们调这个,如果你失败。好,拿过来。来个rejected,那应该调这个,别急,还没完事,为什么呢?因为你注意观察。这个函数。啊,这个函数它呢,肯定是传给了unresolved了,人家这个函数在声明时是有一个行参的。啊,但是你看我们这儿在调的时候呢,我们并没有传递实参,所以说咱们这儿应该把食参补一下。那么13是谁呢?你想一想,这个函数的最终处理的结果是成功的那个值。所以在实参这块,应该传入的就是promise成功的那个结果值。那那个结果值在哪存着呢?他在实例对象promise result。
04:02
啊,在这个属性当中保存着呢。所以说咱们只需要把成功的结果放就是传递给unresolved就可以了。对应的,失败的也是如此。好了,我们来看一看效果怎么样。右键打开浏览器。然后刷新一面。大家可以看一下,此时OK,就正常的输出了,顺便咱们来一个reject失败。看看这个失败,它好使不好使。你失败的话,那肯定是走这儿。啊,走这儿的话,然后就去调第二个回调。顺便呢,把你失败这个结果传递给reason。他就会进行一个这样的黄色的一个警告输出。点开右键刷新。没有问题,而且在这儿我们如果用思路的方式去抛一个啊,错误。他呢也是会变为失败,失败也是会走第二个回调。
05:04
好,大家可以看一下,没有问题。好了,这是当前呢,我们对Z方法当中回调的执行做了一个实现,我们这个小题就先到这。
我来说两句