有时候会在
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()
,所以还是每秒运行一次,而不是两秒