Skip to content

Instantly share code, notes, and snippets.

@AndersDJohnson
Last active March 28, 2023 09:17
Show Gist options
  • Save AndersDJohnson/4385908 to your computer and use it in GitHub Desktop.
Save AndersDJohnson/4385908 to your computer and use it in GitHub Desktop.
A synchronous version of setInterval (functional form). Waits for the interval function to finish before starting the timeout to the next call.
var setIntervalSynchronous = function (func, delay) {
var intervalFunction, timeoutId, clear;
// Call to clear the interval.
clear = function () {
clearTimeout(timeoutId);
};
intervalFunction = function () {
func();
timeoutId = setTimeout(intervalFunction, delay);
}
// Delay start.
timeoutId = setTimeout(intervalFunction, delay);
// You should capture the returned function for clearing.
return clear;
};
@AndersDJohnson
Copy link
Author

@siddacool this returns a function you can call to clear:

var clear = setIntervalSynchronous(fn, 1000):

// Later...

clear();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment