有时候会在
setInterval使用for或foreach循环,使得程序运行时间变的不准确。
使用setTimeout模拟setInterval
function newInterval (func, millisecond){
function inside(){
func()
setTimeout(inside, millisecond) //第二次往后调用,每秒后调用自身
}
setTimeout(inside, millisecond) // 第一次运行调用
}
newInterval (like,1000)
function like(){
consol.log('每秒运行一次')
}
有人会觉得
setTimeout(inside, millisecond)会执行两次,会有两秒的错觉,其实第二个setTimeout(inside, millisecond)
是第一次运行的时候调用,等到第二次运行的时候,一直递归调用的是自身inside(),所以还是每秒运行一次,而不是两秒
本文解释了如何通过setTimeout函数来模拟setInterval,避免因循环导致的时间误差。通过newInterval函数和递归调用,确保每秒精确执行一次函数,而非看似两秒。

5923

被折叠的 条评论
为什么被折叠?



