温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
哈喽,大家好,这一个小节呢,我们来实现一个功能。这功能呢,它是promise当中的一个细节。就是回调函数是异步执行的。这个回调函数指的是哪个回调函数呢?它指的是then指定的这个回调函数。也就是他是异步执行的。首先我们先把这个代码呢,先执行一下啊,这个代码正常应该是输出OK的,这咱们都。写的时间比较长了啊,你看OK,然后为了验证这个代码,这个函数它是异步执行的,我们怎么办呢?我们这样来做。我在这儿呢,输出一个111。在下边儿呢,我来输出一个222。保存。啊,为了能够有对比啊,咱这样来做,我在这儿呢,也输出一个内容。啊,这块来个111,这块来个222,这块呢来个333。大家可以自己先想一想,这个代码的执行结果是怎样的啊,就是输出结果是怎样的。
01:08
好,然后我来说一下这个代码的一个输出结果。它是先输出一。然后呢,再输出三。最后呢,输出二。咱来看一下右键刷新132,为什么是132呢?就是因为这个Z当中的指定回调啊,它里边这个回调是异步执行的,得等同步代码全都执行完毕之后,这个它才能够去执行。是这样子的,然后现在现在的话,我们把我们这个打开,你来看看结果是怎样的,右键刷新。咱封装这个代码啊,它的结果是123,那明显是有点儿问题的哈,所以咱们应该对这个代码再做一些改进。那么怎么做才能够让这个回调是异步执行的呢?我们需要点开任意方法。
02:01
点开它。你这个时候状态已经改成成功了,对不对,所以说所以说咱们应该在成功的这个位置去让它异步执行,所以说在这应该加一个定时器。我们用定时器呢,把它包裹一下,这个函数执行就变成异步的了。除了这个加完了之后,咱还得在失败的这个位置也得去加上一个。定时器。哎,像这样子。好了,除了这两个之外呢,咱还有一个地方也得去加成异步的谁呢?就是resolve函数当中执行回调的那个位置,就是resolve函数这块。和这块。啊,什么情况呢?就是当我们改变完状态之后,这个回调函数它要执行啊,就必须要进队列。啊,就是必须要异步去执行,而不能立即去调用,所以说咱把定时器在这儿呢,也补一个。
03:08
诶。执行回调函数这块是异步的,往前推一下。下边这块也是一样。好,然后把它拿过来。往前一推。好了,搞定啊。这样的话呢,我们就跟内置这个promise在表现上面是一样的了。点开右键刷新看一下132,这是一个成功的情况,再来看一个失败的情况。啊,当然失败也是一样的啊。我们这写一个reason。这输出一个444。这个输出结果应该是134啊。点开。
04:00
打开看134没有问题。好了,那关于这个功能的一个封装实现,我们就先到这儿。
我来说两句