如何仅处理Promise错误?无需声明无用成功回调的跨浏览器方案
更简洁的Promise错误处理方式
当然有更清爽的解决方案!你完全没必要写那个空的成功回调——直接用.catch()方法就可以专门处理Promise的reject状态,不管是AngularJS的$q Promise还是其他主流类库(比如原生ES6 Promise、Bluebird等),这个方法都是通用的跨浏览器实现方式。
.catch()本质上就是.then(null, rejectionHandler)的语法糖,专门用来捕获Promise链中的错误,写法上更简洁直观:
优化后的代码示例
MyClass.method().catch((eData) => { // Important code to run here });
针对AngularJS的补充说明
AngularJS的$q Promise完全支持.catch()方法,和原生Promise的行为保持一致。如果你的项目需要兼容老旧浏览器(比如IE9及以下),AngularJS已经帮你做了底层的兼容性处理,不用额外担心。
这种写法不仅省去了无用的空回调,还能让代码逻辑更清晰——其他开发者一眼就能看出你这段代码只关注错误处理的部分,可读性大大提升。
内容的提问来源于stack exchange,提问作者caiocpricci2
相关产品推荐
相关产品推荐

