promise中then和catch都可以处理异常,那么它们对于异常的处理有什么区别呢?
Promise.reject('error').then(()=> {}, val=> {
console.log(val);
});
Promise.reject('error').catch(val=> {
console.log(val);
});
promise中then和catch都可以处理异常,那么它们对于异常的处理有什么区别呢?
Promise.reject('error').then(()=> {}, val=> {
console.log(val);
});
Promise.reject('error').catch(val=> {
console.log(val);
});
.catch
只是一个语法糖而己 还是通过 then
来处理的
大概就是这样
Promise.prototype.catch = function(fn){
return this.then(null,fn);
}
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
首先纠正一个误区:
谁说 reject 是用来处理异常的了- -reject 是用来抛出异常的,catch 才是用来处理异常的
类比传统的 try catch 写法,reject 就相当于 throw
然后 reject 是 Promise 的方法,而 catch 是 Promise 实例的方法:
具体用法建议还是多看看文档吧。
https://developer.mozilla.org...
补充
回答一下题主修改后的问题,then 的第二个参数和使用 catch 的区别
主要区别就是,如果在 then 的第一个函数里抛出了异常,后面的 catch 能捕获到,而第二个函数捕获不到