00:00
哈喽,大家好,这一个小节呢,我们来看一下第五个问题,第五个问题是这样子的。Promise应该如何去串联多个操作任务?那么其实这块呢,也比较简单。为什么呢?因为promise的这个Z方法呢,它是返回一个新的promise,所以说我们可以在then方法的后边呢,接着再去调用Z方法,这样子就可以实现啊,任务的一个串联的。好了,我们先来给大家演示一下,比如说let p等于一个new的promise。Resolve reject。在里边我们可以进行同步任务或者异步任务都可以,比方说我们这里可以写一个异步的,这因为因为这种场景呢,会比较多见啊,比较常见我这写一个resolve,写一个OK,后续呢,我们就可以写p.Z方法。好,然后在这个里边,我们还可以再去嵌套其他的这个promise操作,比方说来一个return new promise。
01:14
像这样子啊,当然这块我没有写一失败的回调,这个不影响啊,我这再来一个resolve,写一个success。好,那么在这种情况下的话呢,这是一个异步任务,然后呢,在这个回调当中,我又来个异步任务,而且是成功的,那么在这种情况下,Z方法的返回结果就是一个成功的promise,所以说在这个位置呢,我就可以把它拿到啊,Console log打印一下value,大家可以看一下啊,这个值正确情况的,正确情况下应该是显示success。好了,点开它看一眼。刷新一遍。你看没有问题,只不过这个的输出时机不是立刻的,而是要等一段时间,等多久呢?你得至少等一秒,因为等一秒钟之后呢,这个P它的状态才会变为成功,它状态变为成功之后,它里边的回调才会执行,这个回调一直行,它呢返回是一个成功的promise,所以说后边这个回调才会去执行,是这样的一个情况。
02:25
还有在这呢,还有一个细节大家注意。Then。好,然后呢,Cons log,打印一下value,这里有一个问题大家可以思考一下,你说在23行这个位置,它会输出什么结果呢?它会输出success还是会输出OK,还是会输出其他呢。大家可以思考一下。这里我就直接公布一下正确答案,这个答案呢,应该是unDeFined。点开右键刷新一下。你可以看一下,这个结果是onDeFi,为什么是onDeFi呢?我们知道啊,Then的返回结果是一个promise。
03:08
它的这个promise状态由什么来决定的?由它指定的回调函数的返回值。来决定,你可以看一下当前咱们这个回调函数,它的返回值是什么呢?没写,没写的话其实就是onDeFi。那么unde,它是一个promise类型的对象吗?显然它不是,所以这个Z方法它的返回结果就是一个成功的promise,且成功的结果就是你这个返回的结果onDeFi。那么好,那么既然成功了,所以说后边这个也会执行第一个回调,并且输出它成功的结果,所以这块就会显示ondet。啊,当然了,在这里边我们依然还可以再去写啊这些。就是用promise去包裹同步或者异步的一些操作,当然异步居多,然后呢,这样的z.Z点的方式把它们连接连连起来,这就是的链式调用,其原理呢,就是因为Z方法的返回结果也是一个promise对象。
04:17
好了,这一个小节,关于promise的串联任务,我们就先接着这么多。
我来说两句