一 class构造器executor说明
定义时
接收一个函数做为执行器,进入会立即执行。此函数接收两个函数做为参数。
调用时
调用时,传入一个函数做为执行器,并且此函数有两个参数,是函数可以直接调用。
class MyPromise {
constructor(executor){
// executor 是一个执行器,进入会立即执行
// 并传入resolve和reject方法
executor(this.resolve, this.reject)
}
value = null;
status = 'pending'; // 初始状态
reason = null;
resolve = (value) => {
// 保存成功之后的值
this.status = 'fulfill';
this.value = value;
}
reject = (reason) => {
this.status = 'reject';
this.reason = reason;
}
}
var p1 = new MyPromise((resolve,reject) => {
resolve('success')
reject('err')
})
new出来的 Promise实例对象
二 通过function构造函数来实现executor
function MyPromise1(executor){
let value = null;
let status = 'pending'; // 初始状态
let reason = null;
var resolve = (value) => {
// 保存成功之后的值
this.status = 'fulfill';
this.value = value;
};
var reject = (reason) => {
this.status = 'reject';
this.reason = reason;
};
executor(resolve,reject);
}
var p1 = new MyPromise((resolve,reject) => {
resolve('success')
reject('err')
})
new出来的 Promise实例对象
总结
- 无论是new什么构造函数,new出来的都是对象。