代码如下
let timer;
const _setInterval = (cb, time) => {
timer = setTimeout(() => {
cb()
_setInterval(cb, time)
}, time)
}
_setInterval(() => {
console.log('count')
}, 1000)
setTimeout(() => {
clearTimeout(timer)
}, 3001)
我设置清除定时器的时长是 3001ms
但是为什么这段代码 还是只打印了两次 count 啊 不应该是三次吗~有没有大佬分析一波
如果把输出写得详细一点,加上时间信息
会发现输出并不是精确的
1000
毫秒延时用原生的
setInterval()
会更准确一些(因为模拟的cb()
处理业务会花一些时间),但仍然可能会有非常小的误差的。