keep track of your setTimeouts

setTimeout and clearTimeout extended to use names to collect timeouts in a registry

by basiclaser

JavaScript

window.oldSetTimeout = window.setTimeout
var registeredTimeouts = {}
var registeredTimeoutsCounter = 0

//overwrite setTimeout to add the timeout to the 'registeredTimeouts' registry as well
window.setTimeout = function(callback, duration) {
	console.log("new timeout registered")
	var timeoutName = "timeout"+registeredTimeoutsCounter;
  console.log(timeoutName)
  registeredTimeouts[timeoutName] = oldSetTimeout(callback, duration);
 	registeredTimeoutsCounter++  
}

window.oldClearTimeout = window.clearTimeout
//overwrite clearTimeout to remove the timeout from the registry as well
window.clearTimeout = function(timeoutName) {
  if(registeredTimeouts[timeoutName]) {
    window.oldClearTimeout(registeredTimeouts[timeoutName])
		delete registeredTimeouts[timeoutName]
  	console.log("timeout cleared")
  } else {
  	console.log("error")
  }
}

window.setTimeout(function(){console.log(11)},1000)
window.setTimeout(function(){console.log(22)},2000)
window.setTimeout(function(){console.log(33)},3000)

//check the registered timeouts before deleting the 2nd one
console.log(registeredTimeouts)

//delete the 2nd registered timeout
window.clearTimeout("timeout1")

//check the registered timeouts before deleting the 2nd one
console.log(registeredTimeouts)