定时器不标准问题

131 阅读1分钟
// 定时器不标准问题
// (10s 就执行 10个任务 哪怕阻塞也执行10个)
// 任务次数
let count = 0
// 程序开始时间
let startTime = new Date().getTime()
const work = () => {
    count++ // 当前任务index
    const now = new Date().getTime()

    const timeFlies = now - startTime

    // 理论上是 count * 1s 才对
    const delay = timeFlies - count * 1000
    const nextTime = 1000 - delay > 0 /* 相当于把下一秒的任务用了一点时间 那么应该还回来  小于0的话已经超了 应该立即0秒延迟执行直到还完延迟的时间 */? 
    1000 - delay 
    :
    0 

    console.log(count)

    setTimeout(() => {
        if (count < 10) work()
    }, nextTime)
}



setTimeout(() => {
    work()
}, 1000)