rejectionhandled
2023年03月14日
一、认识
当Promise
被reject
并且错误信息已经被catch
处理的时候,这个错误不会被window.onerror
以及window.addEventListener("error",handler,true)
捕获。但是有专门的rejectionhandled
事件方法进行捕获处理
二、语法
window.addEventListener("rejectionhandled", event => {
console.log("Promise rejected; reason: " + event.reason);
}, false);
window.onrejectionhandled = ()=>{
}
Promise.reject(throw new Error("xxx")).catch(error=> { console.log(error) });
三、操作
3.1 阻止默认事件
许多环境 (例如 Node.js
) 默认情况下会向控制台打印未处理的 Promise rejections
。你可以通过为 rejectionhandled
事件添加一个处理程序来避免这种情况的发生,该处理程序除了执行你希望执行的任何其他任务之外,还可以调用 preventDefault()
来取消该事件,从而阻止该事件冒泡并由运行时的日志代码处理。这种方法之所以有效,是因为 rejectionhandled
事件是可以取消的。
-
window.addEventListener
: 通过e.preventDefault()
取消默认事件 -
window.onrejectionhandled
: 通过return true
来取消默认事件