Promises / A+ 规范
2022-03-31 13:38:15 0 举报
AI智能生成
根据promises/A+规范翻译整理出的脑图文件
作者其他创作
大纲/内容
状态 states
一个 Promise 的状态必须为以下三种状态之一:等待态(Pending) 、完成态(Fulfilled) 和 拒绝态(Rejected) 。
Promise 为各个状态时
等待态:Pending 时
可以改变为 其他两种状态
完成态:Fulfilled 时
必须有一个不能改变的值 value
拒绝态:Rejected 时
必须有一个不能改变的原因 reason
注意
如果当 value 或 reason 是引用类型值时,只要求其引用地址相等,属性值是可被更改
then 方法
一个 promise 必须提供一个 then 方法来接收它当前 完成的值(value) 或者 拒绝的原因(reason)
then 方法使用
promise.then(onFulfilled, onRejected)
参数
onFulfilled
onRejected
返回值
必须返回一个 promise
promise2 = promise1.then(onFulfilled, onRejected);
onFulfilled
onRejected
onRejected
是函数时
返回一个值 x
则运行下面的 Promise 执行过程
抛出一个异常 e
则 promise2 必须拒绝(Rejected),并返回异常 e 的原因(reason)
不是函数时
promise1 成功, promise2 也必须成功,并返回和 promise1 相同的值(value)
peomise1 拒绝,promise2 也必须拒绝,并返回和 promise1 相同的原因(reason)
Promise 执行过程
[[Resolve]](promise, x)
需输入一个 promise 和一个值 x,写做 [[Resolve]](promise, x)
x 有 then 方法,且看上去像一个 Promise ,执行时使 promise 接收 x 的状态,否则用 x 的值来执行 promise
参数
promise
x
promise 和 x 指向同一对象
提示语法错误,并且拒绝 promise
x 是 promise
x 处于 等待态(pending)
promise 需保持为等待态(pending)直至 x 为成功态(Fulfilled)或失败态(Rejected)
x 处于 成功态(Fulfilled)
用相同的值(value)完成(Fulfill) promise
x 处于 失败态(Rejected)
用相同的原因(reason)拒绝(reject)promise
x 是 对象或者函数
有 .then
把 x.then 赋值给 then
then
是函数
把 x 当做 this 调用它,
第一个参数 resolvePromise ,
第二个参数 rejectPromise
x.then(resolvePromise, rejectPromise)
第一个参数 resolvePromise ,
第二个参数 rejectPromise
x.then(resolvePromise, rejectPromise)
如果使用值 y 为参数来调用 resolvePromise ,则运行 [[Resolve]](promise, y)
如果调用 rejectPromise 的参数是原因是 r 时,则使用原因 r 来拒绝 promise
如果 resolvePromise 和 rejectPromise 同时被调用,或者被同一参数调用了多次,则优先采用首次调用并忽略剩下的调用
如果调用 then 抛出了异常e
已经调用了 resolvePromise 或 rejectPromise,则忽略。
否则,以 e 为原因 拒绝 promise
不是函数
以 x 为参数执行 promise
无 .then
取 x.then 的值时抛出错误 e ,则以 e 为原因(reason)拒绝(reject) promise
x 不是对象、函数、promise
以 x 为参数执行 promise
0 条评论
下一页
为你推荐
查看更多