温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
Hello,大家好,这个小叮当我们来接着去进行功能实现,这次呢,咱们做的功能是这个promise对象状态呢只能修改一次,就是它只能从pending转为resolved啊,转成这个成功,只能由pending呢转为失败啊,不能由这个成功转为失败,或者失败转成功,而且状态只能改一次。好演示一下啊,比方说在这块掉了resolve,又调reject,那这个P对象它的状态是什么呢?状态应该是成功,且成功结果为OK。下边这个reject它不能够再改变状态了,点开看一眼,刷新可以看一下状态为成功,值为OK。我们现在的话,打开咱自个儿这个promise去看一看。点开刷新一面,那你会发现咱这个结果它是一个失败的,也就是说在第一次改变成功之后,后边他在reject这块又把成功状态改为了失败,明显这个是不符合最终的要求的。好,下边呢,我们就来分析一下怎么样做。
01:18
啊,就能够确保这个状态只能更改一次呢。啊,咱们要从这个resolve和reject这样的函数去下手。来看一下,其实这个思路呢,也比较简单,就是在改变状态之前。我们应该去先判断一下这个promise对象状态是不是已经被改过了,如果说对象状态已经被改过了,那咱就没有必要再去改了啊,如果没有改过,咱们再去改,所以说这里只需要加一个判断就可以实现。如果self.promise state。
02:00
它要是等于一个pending,你要是等于pending呢,下边代码就可以执行,我们这来一个取反,如果你不等于pending啊,无论你是成功还是失败也好,下边代码就不能再执行了,直接return。啊,对应的咱这个reject它也是如此,好加上这样一个判断,我们就能够保证promise啊,它的状态只能更改一次。好,点开咱们来验证一下刷新。你看现在就是一个成功的,如果说你把reject放上边,Resolve呢,放下边啊,放下边都打开啊,这结果应该是一个失败的啊,右键刷新,你看状态失败。然后呢,结果值就是那个error,好了,这就是当前关于状态只能修改一次的代码实现,我们这个小节先到这儿。
我来说两句