走进Promise-第九弹:catch方法实现

188 阅读1分钟

catch

方法:

用了处理当前的promise对象最终的失败状态的情况,当调用then方法时是可以不传递失败回调的,那么不传递失败回调,如果调用失败就会被catch捕获,传入的catch中的回调函数。

解决思路:

  • catch方法内部,调用then方法即可,在then方法成功回调的地方传入undefined即可。在失败的回调,传入回调函数,这样就可以执行catch中的失败回调。
  • 原型方法而不是静态方法。

**testPromise.js**中:

/**
   * catch
   */
  catch (failCallback) {
    return this.then(undefined, failCallback)
  }

index.js中:

// 10.catch方法
function p2 () {
  return new testPromise(function (resolve, reject) {
    reject('失败')
    // resolve('成功');  
  })
}

p2()
  .then(value => console.log(value))
  .catch(reason => console.log(reason))

执行结果:

至此,promise.catch方法功能也已实现。