Created
January 2, 2021 17:52
-
-
Save priort/3ff2e7d243070e3507ff2ad56c1ace00 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let eventDispatcher = function() { | |
let replaying = false; | |
let events = []; | |
let subscribers = {}; | |
let dispatchEvent = (ev) => { | |
if (!replaying) { | |
events.push(ev); | |
} | |
for (const sub of subscribers[ev.name]) { | |
sub(ev); | |
} | |
} | |
let subscribe = (eventName, f) => { | |
if(subscribers[eventName]) { | |
subscribers[eventName].push(f); | |
} else { | |
subscribers[eventName] = [f]; | |
} | |
} | |
let replay = () => { | |
replaying = true; | |
let i = 1 | |
for (const ev of events) { | |
setTimeout(() => dispatchEvent(ev), 1000 * i); | |
i++; | |
} | |
setTimeout(() => replaying = false, 1000 * events.length) | |
} | |
return { | |
dispatch: dispatchEvent, | |
subscribe: subscribe, | |
replay: replay | |
} | |
}(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment