为什么要使用setTimeout模拟setInterval
为什么?接着往下看就明白了
setInterval
const setInterval = (()=>{
console.log('每秒执行一次')
},1000)
setInterval 每 n 毫秒启动一个函数,而无需考虑函数何时完成执行。
如果一个函数总是花费相同的时间,那就没问题了:
函数可能需要不同的执行时间,这具体取决于网络条件,例如:
也许一个较长时间的执行会与下一次执行重叠:
为了避免这种情况,可以在回调函数完成时安排要被调用的递归的 setTimeout:
const myFunction = () => {
// 做些事情
setTimeout(myFunction, 1000)
}
setTimeout(myFunction, 1000)
这样就可以实现setInterval的功能,但是没有setInterval的问题