拒绝处理不开火

Red*_*ter 1 javascript promise

我正在尝试使用,rejectionhandled但无法启动。下面的代码应该基于我能找到的所有文档工作。我注册了一个监听器,rejectionhandled然后拒绝一个承诺并抓住它。在启用了“测试”标志的 chrome 和 firefox 中,记录但未“拒绝”。我错过了什么?

window.addEventListener("rejectionhandled", e => console.log("rejected"), false);
new Promise((resolve, reject) => setTimeout(reject, 1000)).catch(err => console.error("testing"))
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 5

rejectionhandled事件不会在每次处理的拒绝时触发,它只会在最初未处理的拒绝(导致unhandledrejectionevents)时触发,但随后确实附加了一个处理程序。

这些事件是从ECMAScript 规范中实现定义HostPromiseRejectionTracker的 HTML 实现中触发的,其注释说

HostPromiseRejectionTracker 在两种情况下被调用:

  • 当一个承诺在没有任何处理程序的情况下被拒绝时,它的操作参数被设置为“拒绝”。
  • 当一个处理程序第一次被添加到一个被拒绝的承诺中时,它的操作参数被设置为“handle”。

  • 不幸的是,MDN 文档需要一些改进。 (2认同)