首页 > 解决方案 > 处理未处理的承诺拒绝:onunhandledrejection 和 unhandledrejection 之间的区别

问题描述

MDN未处理承诺拒绝时会触发两个事件。

它们都具有相同的兼容性,所以我想知道onunhandledrejectionunhandledrejection有什么区别?

标签: javascriptes6-promise

解决方案


JavaScript 中几乎每个窗口 EventListener 都是这种情况。例如,请参见下面的按键事件:

window.addEventListener("keypress", () => console.log("Key pressed!"));
window.onkeypress = () => console.log("Key pressed!");

将 EventListener 附加到窗口元素的两种方法之间的主要区别是:

  • 使用“ addEventListener() ”方法,您将能够为单个事件订阅多个事件侦听器函数。
  • 使用“ window.onunhandledrejection ”-属性,您只能为该属性分配一个功能,该功能将在同一事件上触发。因此,如果您稍后将另一个函数分配给该属性,它将覆盖您的初始分配。

例子:

window.addEventListener("keypress", () => console.log("Key pressed! Listener 1"));
window.addEventListener("keypress", () => console.log("Key pressed! Listener 2"));
window.onkeypress = () => console.log("Key pressed! Listener 3");
window.onkeypress = () => console.log("Key pressed! Listener 4");

// If the user presses any key, the Events will be triggered in the order of assignment.
// The console output would be:

// Key pressed! Listener 1
// Key pressed! Listener 2
// Key pressed! Listener 4

也看看这个非常详细的答案,它解释了两种方法的优缺点!


推荐阅读