一、Promise/A规范
Promise是类或函数,内部有pending (等待)、fulfilled (执行、完成)、rejected (拒绝、未完成)三种状态。
默认值为pending状态。 也就是说,创建Promise对象后的状态是pending,pending状态可以在fulfilled或rejected之间切换。
fulfilled和rejected是最终状态,如果是fulfilled或rejected,就不能转移到其他状态。
Promise需要向外部提供then方法。
如果可选参数onFulfilled和onRejected不是函数,则将其忽略。
所有onFulfilled和onRejected函数都必须异步执行。
调用onFulfilled函数时,当前Promise的值作为参数传递,只能调用一次。
调用onRejected函数时,当前Promise失败的原因作为参数传递,只能调用一次。
then函数的返回值保持Promise以进行链调用。

resolvePromisethen方法创建并返回Promise对象。 在then中注册的回调函数返回各种值,需要验证。
then方法返回的promise不能等于then回调函数的返回值x。 否则,必须抛出错误。
如果then回调函数的返回值是Promise以外的对象,则可以是then直接返回的Promise对象的resolve方法,resolve(x )。
在创建Promise时,传递创建Promise对象后立即执行的函数。 它还接收两个参数来运行或拒绝当前的Promise对象。 也就是说,修改当前promise对象的状态。 因为Promise处理异步,所以在Promise状态完成时可能会收到异步操作执行的结果,在Promise状态未完成时可能会收到失败的原因,所以在Promise内部有异步操作的结果value,失败的原因REE
这里也有Promise必须执行一次的问题。 如果Promise的状态从pending状态变更为fulfilled或rejected,就不能再变更了。 也不能从fulfilled更改为fulfilled。 也就是说,它是resolve或rejected。 所以有必要判断resolve和reject的内部。 状态改变后就不执行了。