This is a simple facility for periodical execution of a function. This essentially encapsulates the native clearInterval/setInterval mechanism found in native Window objects.

The only notable advantage provided by PeriodicalExecuter is that it shields you against multiple parallel executions of the callback function, should it take longer than the given interval to execute (it maintains an internal “running” flag, which is shielded against exceptions in the callback function). This is especially useful if you use one to interact with the user at given intervals (e.g. use a prompt or confirm call): this will avoid multiple message boxes all waiting to be actioned.

Of course, one might very well argue that using an actual object, not needing to maintain a global interval handle, etc. constitute notable advantages as well.

Creating a PeriodicalExecuter

The constructor takes two arguments: the callback function, and the interval (in seconds) between executions. Once launched, a PeriodicalExecuter triggers indefinitely, until the page unloads (which browsers usually take as an opportunity to clear all intervals and timers) or the executer is manually stopped.

// Campfire style :-)
new PeriodicalExecuter(pollChatRoom, 3);

new PeriodicalExecuter(function(pe) {
  if (!confirm('Want me to annoy you again later?'))
}, 5);
// Note that there won't be a stack of such messages if the user takes too long
// answering to the question...




Stops the periodical executer (there will be no further triggers).