Skip to content

Instantly share code, notes, and snippets.

@costa
Created August 14, 2016 16:02
Show Gist options
  • Save costa/d11ef72334f5d8361ff5bb4c9adc1991 to your computer and use it in GitHub Desktop.
Save costa/d11ef72334f5d8361ff5bb4c9adc1991 to your computer and use it in GitHub Desktop.
different event behaviour comparison
'use strict';
/* eslint-disable no-console */
var TEST_DELAY = 0;
var TEST_SIZE = 1000;
console.log('TO-Starting ' + TEST_SIZE);
var tos = Array.apply(null, Array(TEST_SIZE)).map(function startTimeout() {
return setTimeout(function stopAllTimeouts() {
try {
console.log('TO-Stopping ' + tos.length);
tos.forEach(function stopTimeout(to) {
clearTimeout(to);
});
}
catch (e) {
console.error(e);
}
}, TEST_DELAY);
});
console.log('TO-Started ' + TEST_SIZE);
setTimeout(function printBye() {
console.log('TO-After ' + TEST_SIZE);
}, TEST_SIZE);
if (typeof document === 'object') {
var elem = document;
var event = document.createEvent('Event');
event.initEvent('build', true, true);
console.log('DOM-Starting ' + TEST_SIZE);
var handlers = Array.apply(null, Array(TEST_SIZE)).map(function createHandler() {
var callback = function destroyAllHandlers(e) { // eslint-disable-line no-unused-vars
console.log('DOM-Stopping ' + handlers.length);
handlers.forEach(function destroyHandlers(handler) {
elem.removeEventListener('build', handler);
});
};
elem.addEventListener('build', callback);
return callback;
});
console.log('DOM-Started ' + TEST_SIZE);
elem.dispatchEvent(event);
console.log('DOM-After ' + TEST_SIZE);
}
var EventEmitter;
try {
EventEmitter = require('events');
} finally {}
if (typeof EventEmitter === 'function') {
var myEmitter = new EventEmitter(); // eslint-disable-line no-undef
myEmitter.setMaxListeners(TEST_SIZE);
console.log('EE-Starting ' + TEST_SIZE);
var listeners = Array.apply(null, Array(TEST_SIZE)).map(function createListener() {
var callback = function destroyAllListeners(e) { // eslint-disable-line no-unused-vars
console.log(' EE-Stopping ' + listeners.length);
listeners.forEach(function destroyListener(listener) {
myEmitter.removeListener('event', listener);
});
};
myEmitter.addListener('event', callback);
return callback;
});
console.log('EE-Started ' + TEST_SIZE);
myEmitter.emit('event');
console.log('EE-After ' + TEST_SIZE);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment