To repeat a function indefinitely, setTimeout
can be called recursively:
function repeatingFunc() {
console.log("It's been 5 seconds. Execute the function again.");
setTimeout(repeatingFunc, 5000);
}
setTimeout(repeatingFunc, 5000);
Unlike setInterval
, this ensures that the function will execute even if the function's running time is longer than the specified delay. However, it does not guarantee a regular interval between function executions. This behaviour also varies because an exception before the recursive call to setTimeout
will prevent it from repeating again, while setInterval
would repeat indefinitely regardless of exceptions.