为什么使用setTimeout、setInterval做倒计时不准?
1、主要原因与JavaScript的执行机制有关。JavaScript是单线程的,这意味着它一次只能执行一个任务。当你设置一个计时器时,计时器的回调函数会被放入任务队列中,等待事件循环来处理。然而,如果在计时器到期时,调用栈中有其他任务正在执行,计时器的回调函数就会被延迟执行。这种延迟会导致计时器不准确。
2、此外,浏览器对 setTimeout
和 setInterval
的最小时间间隔有一定的限制,通常在4毫秒或更高,这也会影响计时的精度。系统资源的限制,如CPU负载过高,也可能导致计时器的回调函数被延迟执行。