Promises
Promise
表示一个异步操作的最终结果,与之进行交互的方式主要是 then 方法,该方法注册了两个回调函数,用于接收 promise 的终值或本 promise 不能执行的原因。
一个 Promise有以下几种状态:
pending:
初始状态,既不是成功,也不是失败状态。fulfilled:
意味着操作成功完成。rejected:
意味着操作失败。
Promise
本质是一个状态机。每个promise
只能是 3 种状态中的一种:pending、fulfilled
或rejected
。状态转变只能是pending -> fulfilled
或者pending -> rejected
。状态转变不可逆。then
方法可以被同一个promise
调用多次。then
方法必须返回一个promise
。规范里没有明确说明返回一个新的 promise 还是复用老的promise
(即 return this),大多数实现都是返回一个新的promise
,而且复用老的promise
可能改变内部状态,这与规范也是相违背的。- 值穿透(上一个
promise
传递过来的值,经由这个then
方法的时候不做任何处理,而是交给再下个then
方法去处理)。