Skip to content

Instantly share code, notes, and snippets.

@AndersDJohnson
Last active March 28, 2023 09:17
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • 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;
};
@ujikit
Copy link

ujikit commented Feb 6, 2019

sir, how to use? ;D

@ItzArty
Copy link

ItzArty commented May 12, 2022

Lovely, thanks!

@karthikironman
Copy link

Thanks, Dude!!!, it saved my time..........God bless..........

@siddacool
Copy link

How to clear interval

@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