setInterval并不是真正间隔一段时间来执行程序, 而是间隔一段时间把程序添加到任务队列中
执行栈每次只能运行一个,因此就导致时间间隔错乱
setInterval做不到真正的每个程序执行完在执行下一个程序
setTimeout是运行完一次以后进行延迟再触发下一个任务
方法1:
function newInterval(fun1,delay) {
function inside() {
fun1()
setTimeout(inside,delay)
}
setTimeout(inside,delay)
}
newInterval(like,1000)
function like() {
console.log('like');
}
方法2:
let like2 = () => {
console.log('like2');
}
function setTimeToInterval(fn,delay){
setTimeout(() => {
fn()
setTimeToInterval(fn,delay)
},delay)
}
setTimeToInterval(like2,1000)