一. Promise规范
二. Promise类设计
class HYPromise {}
function HYPromise() {}
三. 构造函数的规划
class HYPromise {constructor(executor) {// 定义状态// 定义resolve、reject回调// resolve执行微任务队列:改变状态、获取value、then传入执行成功回调// reject执行微任务队列:改变状态、获取reason、then传入执行失败回调// try catchexecutor(resolve, reject)}}
四. then方法的实现
class HYPromise {then(onFulfilled, onRejected) {// this.onFulfilled = onFulfilled// this.onRejected = onRejected// 1.判断onFulfilled、onRejected,会给默认值// 2.返回Promise resolve/reject// 3.判断之前的promise状态是否确定// onFulfilled/onRejected直接执行(捕获异常)// 4.添加到数组中push(() => { 执行 onFulfilled/onRejected 直接执行代码})}}
五. catch方法
class HYPromise {catch(onRejected) {return this.then(undefined, onRejected)}}
六. finally
class HYPromise {finally(onFinally) {return this.then(() => {onFinally()}, () => {onFinally()})}}
七. resolve/reject
八. all/allSettled
核心:要知道new Promise的resolve、reject在什么情况下执行
all:
- 情况一:所有的都有结果
- 情况二:有一个reject
allSettled:
- 情况:所有都有结果,并且一定执行resolve
九. race/any
race:
- 情况:只要有结果
any:
- 情况一:必须等到一个resolve结果
- 情况二:都没有resolve,所有的都是reject
