Skip to content

Instantly share code, notes, and snippets.

@benhodgson
Created February 18, 2012 10:55
Show Gist options
  • Save benhodgson/1858757 to your computer and use it in GitHub Desktop.
Save benhodgson/1858757 to your computer and use it in GitHub Desktop.
function whenAllTriggered(tokens, callback) {
// returns a function that takes a single token
// once this function has been called with all tokens at least once,
// callback is invoked.
var triggeredStates = {},
nTokens = 0,
nTriggered = 0;
for(var i = 0; i < tokens.length; i++) {
triggeredStates[tokens[i]] = false;
nTokens++;
}
// trigger function
return function (token) {
if (triggeredStates[token] === false) {
triggeredStates[token] = true;
nTriggered++;
if (nTriggered == nTokens) {
callback();
}
}
};
};
var trigger = whenAllTriggered(["ONE", "TWO", "THREE"], function () {
console.log("Partaaaay!");
})
trigger("ONE");
trigger("THREE");
trigger("TWO"); // logs "Partaaaay!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment