主要用于手写实现原本Promise有的功能。可以用构造函数的方式来重写。但是这里用class来封装类,能更加相似于面向对象编程。
此篇主要考虑几个功能点:
1.Promise实例对象中的回调函数的声明和怎么使用执行器函数调用。
2.then方法的手写,考虑作为异步微任务的then方法的实现,并且考虑返回值是否为Promise对象的问题。
3.如何进行类的封装,需要注意,构造函数上的方法和原型上方法的调用对象不同。
引入这段JS代码既可以实现Promise的一些基本方法。
class Promise {
constructor(executor) {
this.PromiseState = "pending";
this.PromiseResult = null;
const self = this;
this.arrOnMethods = [];
function resolve(data) {
self.PromiseState = "fullfilled";
self.PromiseResult = data;
if (self.arrOnMethods.length !== 0) {
self.arrOnMethods.forEach((item) => {
item.onMethodResolved();
})