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
方法功能也已实现。