promise

74 阅读1分钟

v2-f113cbabc036ec17df1962aebfb6ced9_r.jpg

ECMAscript 6 原生提供了 Promise 对象

Promise 对象有以下两个特点

一、对象的状态不受外界影响

Promise 对象代表一个异步操作,有三种状态:

1、pending: 初始状态,不是成功或失败状态

2、fulfilled: 意味着操作成功完成

3、rejected: 意味着操作失败

二、一旦状态改变,就不会再变,任何时候都可以得到这个结果

Promise 优缺点

优点: 可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。Promise 对象提供统一的接口,使得控制异步操作更加容易

缺点: 无法取消 Promise,一旦新建它就会立即执行,无法中途取消。如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部。当处于 Pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)

Promise 创建

要想创建一个 promise 对象、可以使用 new 来调用 Promise 的构造器来进行实例化。

步骤:

image.png

Promise 构造函数包含一个参数和一个带有 resolve(解析)和 reject(拒绝)两个参数的回调。在回调中执行一些操作(例如异步),如果一切都正常,则调用 resolve,否则调用 reject。

image.png

Promise 的静态方法

1、Promise.race():接收多个Promise实例,可以得到最先处理完毕的结果(可能是成功,也可能是失败)

2、Promise.all():接收多个Promise实例,都成功了会触发then,有一个失败就会触发catch

3、Promise.any():接收多个Promise实例,可以得到最先处理成功的结果,都失败才会触发catch