00:00
哈喽,大家好,这一个小节呢,我们来封装一下promise.resolve这个方法。这个之前在API那个阶段呢,我们已经介绍过了啊,它呢返回一个promise对象啊,它的状态呢,由传入的这个值来决定,如果传入的是一个非promise类型的一个数据,那它的状态就是一个成功,且传入的参数就是它成功的结果值。那如果说你传的是一个类型的对象的话,那么则它这个返回的结果就由你传入的这个promise对象状态和结果来决定,你传入值成功,则它成功传入这个这个值,它如果失败,它也是失败的。好了,那么接下来的话呢,我们先来看看自己的可不可以啊,这个全局人家内置那个肯定是可以的。点开刷新页面,大家可以看一下,报错了啊,Promised result is not a function啊说咱这个不是个函数是吧,那既然不是个函数,咱就想办法去添加这个resolve的方法,这个方法要注意,它是属于promise这个函数对象的,它不是属于它不是属于实例对象的,所以说在添加时呢,咱们应该这么做。
01:22
哎,应该这样去声明才可以,他能接受一个参数,嗯,咱们这呢,先来一个value,然后呢,它的返回结果呢,是一个promise对象,哎,所以说在这呢,咱们来一个return new promise。然后呢,在里边传入这个执行性函数。啊。在这块呢,返回的这个数据的类型已经定了,肯定是一个promise对象了,但是呢,啊,那么后边里边状态怎么去修改,还没有定,先别急,咱们先测试一下看有没有问题,好了,没有问题,返回的结果确实是一个promise对象,那好,那下面咱们想办法去更改它的一个状态啊状态呢是由传入的这个value来决定的,如果value instance of promise啊,如果说你是一个promise怎么样,如果不是怎么样,如果不是,那就成功呗。啊状态设置为成功,我们调resolve就可以了,并且把它返回,把它传入这个值设置进来搞定,那如果说我要是一个呢啊,Promise,行,你是promise,你肯定能掉Z方法,你要成功你就走第一个回调,你要失败你就走第二个回。
02:46
好,那么你成功,我也成功,然后你失败,哎,我也失败。这样的话,这个方法就封装完毕了,好,我们一起来看效果怎么样,右键刷新啊,它不再是一个pending,而是变成了成功的状态啊。当然咱们还可以传入一个promise对象去试一试啊,Constant PR等于一个promise.resolve在里边买一个new的promise。
03:17
Check。好了,我传一个进来啊,我这边呢成功。啊,打印一下,P2说了你成功,我P2就成功是吧,你成功的值就是我成功的值。切过来右键刷新。再看一下成功success,那如果说你要失败呢,Reject error,你失败我也失败,切过来右键刷新。OK啊,成了,当然在这的话还可以怎么写呢?还可以这样子,等于一个promise.resolve再来一个promise.resolve请oh yeah。
04:00
那对于这种情况的话,它的返回结果是什么呢?咱们分析一下是吧,首先这个它的返回结果是一个成功的promise,啊,成功的值是它,那好,你这已经是一个promise了,那resolve它的这个结果,返回结果是由你来决定的,你成功那我也成功。啊,所以说P3结果也是一个成功的,且成功的值为最里边这个参数可以来看一下右键刷新。没有问题。好了,那关于promise resolve方法的封装,我们就先到这儿。
我来说两句