Promise.prototype.catch = function(){console.log(1)}
这样就被我覆盖了,原来的catch呢?
好像要用call apply来写?怎么写呢?
Promise.prototype.catch = function(){console.log(1)}
这样就被我覆盖了,原来的catch呢?
好像要用call apply来写?怎么写呢?
先用变量引用一下,然后再放回去就行了:
var originCatch = Promise.prototype.catch;
Promise.prototype.catch = function(...arg){
// 注入其他代码
// ...
// 绑定 promise 实例,传入参数
originCatch.bind(this)(...arg);
// 或者用 apply
// originCatch.apply(this, arguments);
}
找不回来了,已经被永久覆盖了。
在覆盖之前,你应该保存一份原始的 catch
。
const originCatch = Promise.prototype.catch
Promise.prototype.catch = function(){console.log(1)}
10 回答11.6k 阅读
2 回答3.1k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
为什么要重写catch呢,要处理异常,在promise对象的catch方法里面写自己的逻辑不能满足需求吗?