我将https://github.com/rtsao/browser-unhandled-rejection用于全局未处理的拒绝。
这是处理程序的注册方式:
window.addEventListener('unhandledrejection', (params) => {
});
我不确定如何在此callback
中处理承诺?一切工作正常,每次promise
失败且未实现catch
时都调用此处理程序,因此我得到了'Uncaught (in promise)'
。
是否有一种方法可以处理unhandledrejection
内部的失败承诺,因此它不会引发'Uncaught (in promise)'
错误,并且promise
失败的代码可以像执行catch
一样正常继续?在params
的论点中,我可以访问被拒绝的promise
,但是我不确定应该如何处理,或者甚至有可能吗?
答案 0 :(得分:1)
根据规范,该事件是可取消的,因此您可以添加
params.preventDefault(); // Note: `params` here is more idiomatically called `event`
向您的处理程序阻止默认操作。 (这可以防止在Chrome上出现“未处理的拒绝”警告,而该警告会在没有该polyfill的情况下实现。)
示例无 preventDefault
:
window.addEventListener("unhandledrejection", event => {
console.log("Got the unhandledrejection event");
});
Promise.reject();
Look in the real browser console.
示例和 preventDefault
:
window.addEventListener("unhandledrejection", event => {
console.log("Got the unhandledrejection event");
event.preventDefault();
});
Promise.reject();
Look in the real browser console.