Skip to content

Instantly share code, notes, and snippets.

@psema4
Forked from tbranyen/events.js
Created October 23, 2018 13:44
Show Gist options
  • Save psema4/8e683ce91521df70da6ef5f57311d72b to your computer and use it in GitHub Desktop.
Save psema4/8e683ce91521df70da6ef5f57311d72b to your computer and use it in GitHub Desktop.
Rethinking events using ES6 (https://tbranyen.com/events)
const bus = {};
const get = e => (bus[e] = bus[e] || new Set());
export const listeners = new Proxy(bus, { get });
export const emit = (e, ...args) => listeners[e].forEach(fn => fn(...args));
import { listeners, emit } from '//tbranyen.com/events';
// Simply name any property on listeners and it will become an event.
listeners.onUpdate.add(updated => console.log('Updated:', updated));
// Instruct an event to be emitted.
emit('onUpdate', 'Hello world');
// Clear all `onUpdate` events.
listeners.onUpdate.clear();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment