catch(console.error)是捕获Promise拒绝的有效写法吗?
解答
代码有效性判断
你给出的这段代码是完全合法且可正常运行的,属于Promise错误捕获的常见简洁写法。
fetch().then(data => { console.log(data); }).catch(console.error);
运行原理解释
- Promise的
catch()方法本身需要接收一个回调函数作为入参,当整个Promise链路抛出错误、状态变为rejected时,catch()会自动调用这个回调函数,同时把错误对象作为唯一参数传递给回调。 console.error是浏览器/Node.js内置的全局方法,本身就是一个函数,作用是接收参数并输出到控制台的错误通道。- 这种写法本质上是把
console.error直接作为回调函数传给catch(),和你手动写.catch(err => console.error(err))的效果完全相同,只是简化了箭头函数的冗余写法。
补充说明:只有当回调函数的参数结构和调用方传递的参数完全匹配时,才能用这种直接传函数名的简写。如果你的错误处理逻辑除了打日志之外还要做其他操作,就不能用这种简写,需要自己写完整的箭头函数处理逻辑。
内容的提问来源于stack exchange,提问作者AnB
相关产品推荐
相关产品推荐

