您可以通过为AddEventListener实现一个包装器来做到这一点,然后跟踪事件是否已经被激发,如果已经激发了,就立即调用回调。
如。
function myAppReady(cb) {
if (!myAppReady.ready) {
document.addEventListener('myappready',function () {
myAppReady.ready = true;
cb();
});
} else cb();
}
myAppReady.ready = false;
// On time..
myAppReady(function () {
console.log("I am always on time :) ");
});
// Dispatch the event.
document.dispatchEvent(new Event('myappready'));
// Event listener registered after event dispatched.
myAppReady(function() {
console.log("I am always late :( ");
});