Skip to content

Instantly share code, notes, and snippets.

@apaleslimghost
Last active January 14, 2017 10:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save apaleslimghost/884df56651457b24e012f8a744a5d846 to your computer and use it in GitHub Desktop.
Save apaleslimghost/884df56651457b24e012f8a744a5d846 to your computer and use it in GitHub Desktop.
module.exports = value => {
const listeners = new Set();
const etter = (...args) => {
switch(args.length) {
case 0: return value;
case 1: {
value = args[0];
listeners.forEach(listener => listener(value));
}
}
};
etter.listeners = listeners;
etter.subscribe = listener => {
listeners.add(listener);
return etter;
};
etter.unsubscribe = listener => {
if(listener) {
listeners.delete(listener);
} else {
listeners.clear();
}
return etter;
};
return etter;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment