Skip to content

Instantly share code, notes, and snippets.

@katelynsills
Created January 24, 2019 19:08
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 katelynsills/eb4a556a14f64b5022f2e6043926ca7a to your computer and use it in GitHub Desktop.
Save katelynsills/eb4a556a14f64b5022f2e6043926ca7a to your computer and use it in GitHub Desktop.
A promises version of our stateHolder
function makeStateHolder() {
let state = undefined;
const listeners = [];
return {
addListener(newListener) {
listeners.push(newListener);
},
getState() {
return state;
},
updateState(newState) {
state = newState;
// Here we use a JavaScript promise to
// call listener.stateChanged asynchronously
listeners.forEach(listener => {
Promise.resolve(listener).then(eventualListener => {
eventualListener.stateChanged(newState);
});
});
},
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment