递归 setTimeout

要无限期地重复一个函数,可以递归调用 setTimeout

function repeatingFunc() {
    console.log("It's been 5 seconds. Execute the function again.");
    setTimeout(repeatingFunc, 5000);
}

setTimeout(repeatingFunc, 5000);

setInterval 不同,这确保即使函数的运行时间长于指定的延迟,函数也会执行。但是,它不保证函数执行之间的定期间隔。此行为也会有所不同,因为递归调用 setTimeout 之前的异常将阻止它再次重复,而 setInterval 将无限期地重复,而不管异常。