jquery - Cancel all Javascript's setTimeouts and setIntervals -
what's proper way cancel js settimeout , setinterval , requestanimationframe after given amount of seconds ?
edit: sorry, should have explained more! code comes either database or api, cannot keep track of timeout,raf or interval ids. don't have ids of timers can clearinterval or cleartimeout or cancelanimationframe. know have use them, don't know how animation ids (if there any).
you need keep id of each interval, timeout , requestanimationframe you've created , call window.clearinterval(id)
etc. on them.
a verfy hackish/brute force way like:
for (var = 1; < 99999; i++) { window.clearinterval(i); window.cleartimeout(i); window.mozcancelanimationframe(i); // firefox }
but wouldn't recommend that.
update:
to after amount of time:
settimeout(function () { (var = 1; < 99999; i++) { window.clearinterval(i); window.cleartimeout(i); window.mozcancelanimationframe(i); // firefox } }, 3000); // after 3 seconds
update 2:
i don't believe there better way brute force way if don't keep reference each time out etc, make bit easier (as suggested this answer), override default setinterval:
var intervals = new array(); window.oldsetinterval = window.setinterval; window.setinterval = function(func, interval) { intervals.push(oldsetinterval(func, interval)); } // can loop on intervals , clear them // 1 one when ever want to. (var interval in intervals) { window.clearinterval(interval); }
the example shows how setinterval
, of course done same way on settimeout
, requestanimationframe
well.
Comments
Post a Comment