// Event composition util, example usage: // // var a = eventComposeHelper(2, () => console.log('DONE')) // a[0]() // a[1]() // DONE logged // function eventComposeHelper(numCallbacksNeeded, whenDone) { const callbacksCalled = Array(numCallbacksNeeded).fill(false); function buildCallbackHandler(index) { return function() { callbacksCalled[index] = true; if (callbacksCalled.every(x => x === true)) { whenDone(); callbacksCalled.fill(false); // if we need to run `whenDone` multiple times } } } return Array(numCallbacksNeeded).fill(null).map((x, i) => buildCallbackHandler(i)); }