Promise 是什么?
Promise是一个异步编程解决方案
Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作,因为同步的话就没有必要写了,他是让头一个异步编程更像同步的写法)的结果。
从语法上说,promise 是一个对象,从它可以获取异步操作的的最终状态(会回调两个参数一个是成功的回调,一个是失败的回调)。
Promise是一个构造函数,对外提供统一的API,自身上有all,reject,resolve方法,它的原型是有then,和catch的方法。
all说明:
此方法在集合多个 promise
的返回结果时很有用。
完成(Fulfillment):
如果传入的可迭代对象为空,Promise.all
会同步地返回一个已完成(resolved)状态的promise
。
如果所有传入的 promise
都变为完成状态,或者传入的可迭代对象内没有 promise
,Promise.all
返回的 promise
异步地变为完成。
在任何情况下,Promise.all
返回的 promise
的完成状态的结果都是一个数组,它包含所有的传入迭代参数对象的值(也包括非 promise
值)。
失败/拒绝(Rejection):
如果传入的 promise
中有一个失败(rejected),Promise.all
异步地将失败的那个结果给失败状态的回调函数,而不管其它 promise
是否完成。
reject 说明:
静态函数Promise.reject
返回一个被拒绝的Promise对象
。通过使用Error
的实例获取错误原因reason
对调试和选择性错误捕捉很有帮助。
resolve 说明:
静态方法 Promise.resolve
返回一个解析过的Promise
对象。
Promise的两个特点
-
Promise对象的状态不受外界影响
(1)pending 初始状态
(2)fulfilled 成功的状态
(3)rejected 失败的状态
Promise的状态有这三种状态,只有异步操作的结果才能改变一种状态,其他任何操作都无法改变状态
2.Promise的状态一旦改变,就不会在改变,任何时候都可以得到这个结果,状态不可逆。