【手写Promise】第一集

48 阅读1分钟

一 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实例对象

image.png

二 通过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实例对象

image.png

总结

  • 无论是new什么构造函数,new出来的都是对象。