Skip to content

实现promise的resolve方法

js
// 实现resolve静态方法3个要点
// 传参为一个Promise则直接返回它
// 传参为一个thenable对象,返回的Promise会跟随这个对象,采用它的最终装状态为自己的状态。
// 其他情况,直接返回以该值为成功状态的promise对象

Promise.resolve = (param) => {
  if (param instanceof Promise) return param
  return new Promise((resolve, reject) => {
    if (param && param.then && typeof param.then === 'function') {
      // param 状态变为成功会调用resolve,将新Promise的状态变为成功,反之亦然
      param.then(resolve, reject)
    } else {
      resolve(param)
    }
  })
}

如有转载或 CV 的请标注本站原文地址