Javascript 为什么我可以在注册之前启动和处理事件?
这种混乱的代码可以工作:Javascript 为什么我可以在注册之前启动和处理事件?,javascript,events,dom-events,Javascript,Events,Dom Events,这种混乱的代码可以工作: let event = new CustomEvent("customEvent", { detail: { book: "FullStack Vue " } }); window.dispatchEvent(event); window.addEventListener("customEvent", e => console.log("This book is " + e.detail.book) ); 让我困惑的是:在我启动事件时,我还没有注
let event = new CustomEvent("customEvent", {
detail: { book: "FullStack Vue " }
});
window.dispatchEvent(event);
window.addEventListener("customEvent", e =>
console.log("This book is " + e.detail.book)
);
让我困惑的是:在我启动事件时,我还没有注册为侦听器,对吗?这件事应该进入虚空的某个地方。或者这是某种“竞赛条件”?在事件真正触发之前完成事件注册
或者,为什么我不应该在实际启动事件之前“倾听”事件?我试图理解这个简单的例子。DOM事件会在下一个时间点发生,比如调用
setTimeout(fn,0)
'如果您想更深入地了解,则“事件循环”是关键字。当您调用dispatchEvent
时,它被放入队列中,因此您将在处理队列之前注册您的侦听器。谢谢。如果这真的是一种模式,我需要挖掘它。