您可以"插入"Chrome中未处理的Promise拒绝吗?

Mic*_*ley 9 javascript google-chrome promise

不久前,v8获得了检测被拒绝但没有附加处理程序(提交)的Promises功能.这在Chrome中作为一个很好的控制台错误登陆,特别适用于当您输入错误或忘记附加处理程序时:

Chrome报告使用处理程序拒绝承诺的示例

我想添加一个处理程序来执行某些操作(例如,向错误报告服务报告),类似于未捕获的异常模式:

window.addEventListener("error", handler);
Run Code Online (Sandbox Code Playgroud)

或者,我正在寻找任何机制,当一个promise被拒绝但是没有在那个tick上处理时,我可以用它来自动调用某种回调.

ily*_*rov 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.
}
Run Code Online (Sandbox Code Playgroud)

但看来我们必须修补thencatch而且Promise.reject还需要做大量的工作。

在这种情况下,有人可能想编写一个 polyfill 来发出自定义unhandledrejection事件。