递归 setTimeout
要无限期地重复一个函数,可以递归调用 setTimeout
:
function repeatingFunc() {
console.log("It's been 5 seconds. Execute the function again.");
setTimeout(repeatingFunc, 5000);
}
setTimeout(repeatingFunc, 5000);
与 setInterval
不同,这确保即使函数的运行时间长于指定的延迟,函数也会执行。但是,它不保证函数执行之间的定期间隔。此行为也会有所不同,因为递归调用 setTimeout
之前的异常将阻止它再次重复,而 setInterval
将无限期地重复,而不管异常。