Promise 是一个对象,从它可以获取异步操作的消息。
Promise对象有以下两个特点。
(1)对象的状态不受外界影响 pending(进行中)、fulfilled(已成功)和rejected(已失败
(2)一旦状态改变,就不会再变
Promise也有一些缺点。
首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。
其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。
第三,当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
方法:
finally()方法用于指定不管 Promise 对象最后状态如何,都会执行的操作
Promise.all()
Promise.race()只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。
ES2021 引入了Promise.any()方法。该方法接受一组 Promise 实例作为参数,包装成一个新的 Promise 实例返回。只要参数实例有一个变成fulfilled状态,包装实例就会变成fulfilled状态;如果所有参数实例都变成rejected状态,包装实例就会变成rejected状态。其实与all相反