Promise的UnhandledPromiseRejectionWarning问题

您所在的位置:网站首页 ribbons是什么 Promise的UnhandledPromiseRejectionWarning问题

Promise的UnhandledPromiseRejectionWarning问题

2023-06-29 10:28| 来源: 网络整理| 查看: 265

在封装Nodejs对MySQL的CRUD API的时候遇到了UnhandledPromiseRejectionWarning提示,查询了解到这是Node.js 6.6.0中增加的一个特性:对 Promise 中未处理的 rejection 默认会输出 UnhandledPromiseRejectionWarning 提示。

先看看我原来的code:

new Promise((resolve, reject)=>{ if(2>1) reject('foo') resolve('bar') })

也就是说,如果你定义的Promise没有进行Catch处理Rejection这种情况,就会有这个提示,解决方法有几个:

直接用resolve来返回错误代码而不用reject

反正最后promise都要返回点什么,用reject还是resolve有什么区别呢,我只要在用的时候根据返回的对象去主动判断这个promise是否是成功的也能达到一样的效果。

new Promise((resolve, reject)=>{ if(2>1) resolve({status: 0, msg: "foo"}) resolve({status: 1, msg: "bar"}) })

直接在Promise里用空函数处理

new Promise((resolve, reject)=>{ if(2>1) reject("foo") resolve("bar") }).catch(()=>{})

用node process的全局unhandledRejection事件来处理

process.on('unhandledRejection', error => { console.log('我帮你处理了', error.message); }); new Promise((resolve, reject)=>{ if(2>1) reject("foo") resolve("bar") })

注意,这种情况下,全局的unhandledRejection事件会优先处理这个错误,也就是像第二种在Promise里用Catch处理是不会生效的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3