Javascript 中绑定到事件的函数的执行顺序

Order of execution of functions bound to an event in Javascript

我在 javascript 中搜索有关绑定到页面事件的函数执行顺序的详细信息,例如通过 EventListener。

例如,如果我将三个函数 A()、B() 和 C() 绑定到同一个事件(比如 DOMContentLoaded),这三个函数的执行顺序是什么? 根据JS代码中addEventListener调用的先后顺序来一一对应?还是同时执行?

另外,我可以修改这个订单吗?例如,要有一个函数,绑定到 DOMContentLoaded 事件侦听器,在绑定到同一事件的任何其他函数之前执行。

var listeners = [];

//add listeners in whatever order you want them executed

document.addEventListener("DOMContentLoaded", function(event) {
    for (var i = 0; i < listeners.length; i++) {
        listeners[i]();
    }
});

事件处理程序总是按照它们注册的顺序被调用。

一旦注册,您将无法在它们之前插入额外的处理程序[*]。


[*] 除非你是一些能够获得所有处理程序及其 EventListener 对象的列表,并调用 removeEventListener 删除它们,插入你自己的,然后重新插入原件。实际上这很可能是不可能的。