diff --git a/src/emitter.js b/src/emitter.js new file mode 100644 index 0000000000..ca262257b7 --- /dev/null +++ b/src/emitter.js @@ -0,0 +1,35 @@ +"use strict"; + +var eventEmitter = new (require('events')).EventEmitter(); + + +eventEmitter.all = function (events, callback) { + var eventList = events.slice(0); + + events.forEach(function onEvent(event) { + eventEmitter.on(event, function () { + var index = eventList.indexOf(event); + if (index === -1) { + return; + } + eventList.splice(index, 1); + if (eventList.length === 0) { + callback(); + } + }); + }); +}; + +eventEmitter.any = function (events, callback) { + events.forEach(function onEvent(event) { + eventEmitter.on(event, function () { + if (events !== null) { + callback(); + } + + events = null; + }); + }); +}; + +module.exports = eventEmitter; \ No newline at end of file