ECMAscript 6 原生提供了 Promise 对象
Promise 对象有以下两个特点
一、对象的状态不受外界影响
Promise 对象代表一个异步操作,有三种状态:
1、pending: 初始状态,不是成功或失败状态
2、fulfilled: 意味着操作成功完成
3、rejected: 意味着操作失败
二、一旦状态改变,就不会再变,任何时候都可以得到这个结果
Promise 优缺点
优点: 可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。Promise 对象提供统一的接口,使得控制异步操作更加容易
缺点: 无法取消 Promise,一旦新建它就会立即执行,无法中途取消。如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部。当处于 Pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)
Promise 创建
要想创建一个 promise 对象、可以使用 new 来调用 Promise 的构造器来进行实例化。
步骤:
Promise 构造函数包含一个参数和一个带有 resolve(解析)和 reject(拒绝)两个参数的回调。在回调中执行一些操作(例如异步),如果一切都正常,则调用 resolve,否则调用 reject。
Promise 的静态方法
1、Promise.race():接收多个Promise实例,可以得到最先处理完毕的结果(可能是成功,也可能是失败)
2、Promise.all():接收多个Promise实例,都成功了会触发then,有一个失败就会触发catch
3、Promise.any():接收多个Promise实例,可以得到最先处理成功的结果,都失败才会触发catch