手写一个Promise/A+,完美通过官方872个测试用例 (7)

至此,我们的Promise就简单实现了,只是我们不是原生代码,不能做成微任务,如果一定要做成微任务的话,只能用其他微任务API模拟,比如MutaionObserver或者process.nextTick。下面再回顾下几个要点:

Promise其实是一个发布订阅模式

then方法对于还在pending的任务,其实是将回调函数onFilfilled和onRejected塞入了两个数组

Promise构造函数里面的resolve方法会将数组onFilfilledCallbacks里面的方法全部拿出来执行,这里面是之前then方法塞进去的成功回调

同理,Promise构造函数里面的reject方法会将数组onRejectedCallbacks里面的方法全部拿出来执行,这里面是之前then方法塞进去的失败回调

then方法会返回一个新的Promise以便执行链式调用

catch和finally这些实例方法都必须返回一个新的Promise实例以便实现链式调用

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpxfj.html