面试题答案
一键面试.catch()
方法- 应用场景:在Promise链中,当某个Promise被拒绝时,使用
.catch()
方法可以捕获该拒绝错误。适用于对单个Promise或Promise链中特定部分的错误处理。例如,在进行数据库查询操作返回Promise时,如果查询失败,可以使用.catch()
捕获错误并进行相应处理,如记录错误日志、返回友好的错误信息给用户。 - 原理:当Promise被拒绝时,它会沿着Promise链向后传递,直到遇到第一个
.catch()
块。.catch()
本质上是.then(null, onRejected)
的语法糖,其中onRejected
函数会接收被拒绝的原因作为参数,从而实现对错误的捕获和处理。
- 应用场景:在Promise链中,当某个Promise被拒绝时,使用
process.on('unhandledRejection')
事件- 应用场景:用于捕获整个Node.js进程中未被处理的Promise拒绝错误。通常用于全局监控和记录未处理的Promise拒绝情况,以便在生产环境中及时发现潜在问题。比如,在一个复杂的Node.js应用中,可能有多个模块返回Promise,如果某个模块中的Promise拒绝没有被正确处理,可以通过这个事件来捕获并进行统一处理,如发送错误报告到监控系统。
- 原理:Node.js的
process
对象提供了unhandledRejection
事件。当Promise被拒绝且没有相应的.catch()
处理程序时,会触发该事件。事件处理函数会接收拒绝原因和被拒绝的Promise实例作为参数,允许开发者在全局层面处理这些未处理的拒绝错误。