promise 有三种状态
1 pending 状态 它是promise 的处始状态 ,可以通过 resolve--> fulfilled 或 reject -->rejected 状态
2 fulfilled 状态 它是最终态 是不可改变 ⼀个promise被resolve后会变成这个状态 必须拥有⼀个value值
3.rejected 最终态, 不可变 ⼀个promise被reject后会变成这个状态 必须拥有⼀个reason
总结⼀下
,
就是
promise
的状态流转是这样的
pending resolve(value) fulfilled
pending reject(reason) rejected
Promise
应该提供⼀个
then
⽅法
,
⽤来访问最终的结果
,
⽆论是
value
还是
reason.
promise.
then
(onFulfilled, onRejected)
1 onFulfilled 必须是函数类型, 如果不是函数, 应该被忽略.
2 onRejected 必须是函数类型, 如果不是函数, 应该被忽略.
onFulfilled 特性
3 在
promise
变成
fulfilled
时 【这句是重点】,应该调⽤
onFulfilled,
参数是
value
在
promise
变成
fulfilled
之前
,
不应该被调⽤
.
只能被调⽤⼀次
(
所以在实现的时候需要⼀个变量来限制执⾏次数)
4 onRejected
特性
在
promise
变成
rejected
时,应该调⽤
onRejected,
参数是reason (其他同上)
5 onFulfilled
和
onRejected
应该是微任务
6.返回值 then 应该返回⼀个promise (因为是规范所以形容词大都是“应该”)
promise2 = promise1.then(onFulfilled, onRejected);
如果
onFulfilled
或者
onRejected
执⾏时抛出异常
e, promise2
需要被
reject
如果
onFulfilled
不是⼀个函数
, promise2
以
promise1
的
value
触发
fulfilled
如果
onRejected
不是⼀个函数
, promise2
以
promise1
的
reason
触发
rejected
7. resolvePromise
resolvePromise(promise2, x, resolve, reject)