00:00
Hello,大家好,那这个小节呢,我们开始来介绍一下promise相关的API。首先第一个是promise的这个构造函数。好,我们可以通过new来实例化对象。在拗的时候呢?它呢,实例化需要接收一个参数,这个参数呢是一个函数类型的参数,可以使用箭头函数去声明,也可以使用匿名函数去声明,都可以。而且呢,这个函数呢,当中有两个行参啊,分别叫resolve和reject,这个resolve和reject函数呢,是内部定义的。啊,成功的时候咱们异步任务啊,成功就会掉这个resolve函数,而异步任务失败的情况下就会掉reject这个函数。啊,还有一点就是这个啊,咱们这个函数类型参数呢,咱们称它为什么呢,称它为执行器函数,来给大家演示一下。
01:02
等于一个new的promise。啊,然后里边在这呢,我改变状态啊调一下。咱们把谁称之为执行器函数呢?就是这个函数的参数。把它称之为执行器函数,这里有一个点是什么呢?就是这个执行器函数啊,它是在promise内部同步调用的。同步调用的什么意思呢?就是说当我们代码执行到这块之后,这一个函数里边的代码会立即执行。我们可以呢,做一个啊,例子conso log打印一个111,下边这个位置呢,我打印一个222。通过它的输出的先后顺序可以得知啊,它的一个执行的特点,打开浏览器看一下这个代码呢,它的结果正确是先一后二,先一后二就表明咱这个函数内部的代码是同步。
02:07
调用的。啊,也就是说这个函数呢,不会进到队列当中去,会立即去执行,这一点很重要,在后期封装的时候呢,啊,这一点还是一个很重要的一个知识点啊,所以这点大家一定要注意啊,同步调用的。好了,那完了之后呢,咱们下边来看一看啊,这个方法Z方法。另一方法呢,咱说了,它是用来指定回调的。啊,传递两个参数,第一个参数是啊。是成功时的一个回调,然后呢,Reject呢,这个rejected呢,它是失败时的一个回调啊,也就是第二个参数啊,它是失败时的一个回调。然后成功执行它,失败呢执行它。啊,这是两个参数,而且这两个参数呢,也都是函数类型的参数。
03:02
好,那么另外呢,还有一个咱们没有接触过,就是这个catch。这个catch呢,它也是用来指定回调的,不过它只能指定失败的回调,不能指定成功的回调,这个我来给大家演示一下。好,那么咱们在下边儿这个位置呢。去做一个执行。啊,执行谁呢,执行这个catch方法好来一个p.catch它呢也来指定一个回调。然后consult.log打印一下这个reason。那么目前为止呢,大家看这个代码状态啊,咱们在呃,这个函数器,这个执行器函数里边并没有去调resolve reject,所以他对象的状态呢,依然是起始状态pending,然后接着的话,我来修改一下。Promise对象的状态啊,来一个reject。写一个error。
04:00
咱们知道REJECT1调这个对象状态就会变成失败,一旦失败就会执行啊,后续的失败的回调。那么咱们这的catch就可以用来指定失败的回调,好了,点开一起去看一看。就他。然后呢,刷新你可以看一下22行输出的error。没有问题啊,这是catch的一个使用。那么其实开始也是做了一个单独独立的封装啊,它内部的实现呢,也是由Z方法来实现的。好了,呃,这个小节的话,我们首先就先来介绍这三个API,第一个执行器啊,这第一个是构造函数,里边呢,这个是执行器的函数参数,它是呢同步调用的,还有呢,Z方法用来指定成功和失败的一个回调,而catch方法呢,用来指定失败的回调函数。
我来说两句