Skip to content

Instantly share code, notes, and snippets.

@reesd
Forked from cowboy/gist:360138
Created May 24, 2011 22:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save reesd/989885 to your computer and use it in GitHub Desktop.
Save reesd/989885 to your computer and use it in GitHub Desktop.
setInterval and setTimeout patterns
// =========================
// SetInterval
// =========================
// While not truly accurate, setInterval is still fairly good, time-wise.
// Better for things like a "one second tick" but not great for expensive
// code executed at small intervals as iterations can "stack".
// (ECMAScript 5 strict mode compatible)
// First "arbitrary code" execution happens after ~1000ms, subsequent
// executions follow suit.
setInterval(function(){
console.log(new Date()); // run some arbitrary code
}, 1000);
// First "arbitrary code" execution is synchronous, subsequent executions
// happen every ~1000ms.
setInterval((function loopy(){
console.log(new Date()); // run some arbitrary code
return loopy;
})(), 1000);
// =========================
// setTimeout
// =========================
// While less accurate time-wise than setInterval, setTimeout allows for
// more "breathing room" when executing expensive code at smaller intervals,
// as a next iteration will only happen ~1000ms _after_ the arbtrary code is
// executed and, not _before_ (like setInterval)
// First "arbitrary code" execution is synchronous, subsequent executions
// happen every ~1000ms.
(function loopy(){
console.log(new Date()); // run some arbitrary code
setTimeout( loopy, 1000 );
})();
// First "arbitrary code" execution happens after ~1000ms, subsequent
// executions follow suit.
(function loopy(){
setTimeout(function(){
console.log(new Date()); // run some arbitrary code
loopy();
}, 1000 );
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment