PromiseA + 规范
术语
1、promise 是一个有 then 方法的对象或者函数,行为遵循 promiseA+规范
2、thenable,有then 方法的函数或者对象,
3、value promise 成功状态时的值,**resolve **的参数
4、reason promise 状态失败时候的值,表示各种拒绝的原因
5、exception 异常值
规范
Promise sates 状态
pending: 初始的状态可改变
1.1 resolve: pending->fulfilled(成功) 状态
1.2 reject:pending-> rejected 状态fulfilled 最终态,不可变
2.1 最终态,不可变
2.2 一个 promise 被 resolve 后变成这种状态
2.3 必须拥有一个 value 值rejected
3.1 最终态,不可变
3.2 一个 promise 被 reject 后会变成这个状态
3.3 必须拥有一个 reason 值(可是 undefined)
状态流转:
pending->resolve(value) -> fulfilled
pending->reject(reason) -> rejected
then
promise 应该有一个 then 方法,用来访问最终的结果
promise.then(onFulfilled,onRejected)
- 参数要求
1.1 onFulfilled 必须是一个函数类型,如果不是,应该被**忽略**
1.2 onRejected 必须是一个函数类型,如果不是,应该被**忽略**
onFulfilled 特性
2.1 promise 变成 fulfilled 的时候,应该调用 onFulfilled 这个函数,参数是 value
2.2 promise 编程 fulfilled 之前,不应该被调用
2.3 只能被调用一次onRejected 特性
3.1 promise 变成 rejected 的时候,应该调用 onRejected 这个函数,参数是 value
3.2 promise 编程 rejected 之前,不应该被调用
3.3 只能被调用一次onFulfilled 和 onRejected 执行环境应该是微任务里面
queueMicrotask(()=>{})//微任务
- then方法可以被调用多次
- 返回值
then 返回值应该是一个 Promise,是一个新的 Promise
```js
const promise1 = new Promise();
const promise2 = promise1.then(cb1,cb2)
```
6.1 onFulfilled 或者 onRejected 执行的结果为 x,调用 resolvePromise()
6.2 onFulfilled 或者 onRejected 执行的时候报错了,promise2 就需要被 reject
6.3
- resolvePromise
then 如果是一个函数, then.call(x) => x.then