处理未处理的承诺拒绝:onunhandledjection和unhandledrejection之间的区别

时间:2019-05-13 08:12:32

标签: javascript es6-promise

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

  • 使用“ 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

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