ES6中promise

一、什么是promise

promise是异步的一种解决方式,本质为构造函数,其包含有all,reject,resolve等方法,究其原型,还包括then,catch方法。Promise包含有两大特点:其一,对象的状态不受外界的影响,其有三种状态,即pending(进行中)、fulfilled(已成功)和rejected(已失败),只有异步操作的结果可以决定的当前的状态;其二,状态改变就定型,即pending变为fulfilled和从pending变为rejected,只要发生这两种改变,就再也不会改变了。

二、resolve和reject

resolve和reject可以看做是对于promise的一种回调,resolve是promise成功的回调,而reject是失败的回调,其原因在于,resolve会将状态修改为fulfilled,而reject会将状态修改为rejected。让我们new一个promise出来看一下。这里主要是在.then或者.catch的时候可以拿到对应的数据。then方法可以接受两个参数,第一个对应resolve的回调,第二个对应reject的回调。 image.png

三、catch

catch主要是用来捕获异常的,和上一步中的.then中的第二个参数一样,如下:

image.png

这里的话,当有错误产生时,就可以进入到catch中,不会影响其他的正常进行。

四、all

该方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后并且执行结果都是成功的时候才执行回调。如下图中所示

image.png

只有在所有一步结果都为成功时才会执行对应的回调。

image.png

五、race

与all方法相反,race方法是谁先执行完毕,就执行对应的回调

image.png

image.png

猜你喜欢

转载自juejin.im/post/7084124909059702792
今日推荐