前段时间,v8获得了capability to detect Promises that are rejected but have no handlers attached(commit)。这在Chrome中作为一个很好的控制台错误登陆,特别适用于当您输入错误或忘记附加处理程序时:
我想添加一个处理程序来执行某些操作(例如,向错误报告服务报告),类似于未捕获的异常模式:
window.addEventListener("error", handler);
或者,我正在寻找任何可以用来自动调用某种回调的机制,当一个承诺被拒绝但没有处理时。
答案 0 :(得分:2)
在window.addEventListener('unhandledrejection', e => ...)
到此为止之前你可能会破解你自己的Promise构造函数,它会创建原始的Promise并在其上调用catch
传递:
error => {
var errorEvent = new ErrorEvent('error', {
message: error.message,
error: error
});
window.dispatchEvent(errorEvent); // For error listeners.
throw error; // I prefer to see errors on the console.
}
但似乎我们必须修补then
,catch
和Promise.reject
- 很多工作。
在这种情况下,有人可能想要编写一个polyfill来发出自定义unhandledrejection
事件。