走进Promise-第七弹:promise.resolve方法的实现

160 阅读1分钟

promise.resolve方法:将给定的值转化为promise对象,也就说promise.resolve返回的值就是promise对象,在返回的promise对象中,会包裹这个给定的值。

解决思路:

  • 判断给定值是promise对象还是普通值
  • 给定值普通值就返回一个promise对象,并包裹这个普通值
  • 给定值是promise就直接返回

**testPromise.js**中:

/**
   * resolve方法
   * 同样为静态方法
   * 1.将给定值返回一个promise对象
   * 2.返回的promise对象中包裹这个给定值
   * 3.如果给定值是promise对象 直接返回
   * 4.如果给定值是普通值,返回一个promise对象,包裹这个值
   * 5.异步也可以执行
   */
  static resolve (value) {
    if (value instanceof testPromise) return value;
    return new testPromise((resolve, reject) => { resolve(value) })
  }

**index.js**中:

// 8.promise.resolve方法
function p1 () {
  return new testPromise(function (resolve, reject) {
    resolve("p1")
  })
}

// 将给定的值转为promise对象,返回的promise对象包裹这个给定的值
testPromise.resolve(10).then(value => console.log(value));
testPromise.resolve(p1()).then(value => console.log(value));

执行结果:

执行结果依次执行,那么我们的resolve方法也是实现了的。