Created
August 14, 2016 16:02
-
-
Save costa/d11ef72334f5d8361ff5bb4c9adc1991 to your computer and use it in GitHub Desktop.
different event behaviour comparison
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'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