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

时间:2015-09-25 18:34:37

标签: javascript google-chrome promise

前段时间,v8获得了capability to detect Promises that are rejected but have no handlers attachedcommit)。这在Chrome中作为一个很好的控制台错误登陆,特别适用于当您输入错误或忘记附加处理程序时:

Example of Chrome reporting a rejected promise with handlers

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

window.addEventListener("error", handler);

或者,我正在寻找任何可以用来自动调用某种回调的机制,当一个承诺被拒绝但没有处理时。

1 个答案:

答案 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.
}

但似乎我们必须修补thencatchPromise.reject - 很多工作。

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