refactor: add EventBus class

pull/13/head
moonrailgun 4 years ago
parent b20385cfb8
commit b78335d24b

@ -0,0 +1,30 @@
/**
*
*
* @example
* const event = new EventBus();
* event.on(() => {
* console.log('trigger')
* })
* event.fire();
*/
export class EventBus<Args extends unknown[] = []> {
listeners: ((...args: Args) => void)[] = [];
fire(...args: Args) {
this.listeners.forEach((fn) => {
fn(...args);
});
}
on(fn: (...args: Args) => void) {
this.listeners.push(fn);
}
off(fn: (...args: Args) => void) {
const index = this.listeners.indexOf(fn);
if (index >= 0) {
this.listeners.splice(index, 1);
}
}
}
Loading…
Cancel
Save