setTimeout和setInterval都是不能保证时间精度的,他们的第二个参数(延时)只能保证何时把代码添加到浏览器的任务队列中,不能保证添加到队列就会立即执行。
如果队列前面还有其他任务,那么就要等这些任务执行完再执行。
简单来说,这两个方法的第二个参数(延时)并不是说何时这些代码会执行,而只是说何时把回调加入到任务队列。如果添加到队列后,主线程被其他任务占用,那么回调不会马上执行。
setTimeout和setInterval都是不能保证时间精度的,他们的第二个参数(延时)只能保证何时把代码添加到浏览器的任务队列中,不能保证添加到队列就会立即执行。
如果队列前面还有其他任务,那么就要等这些任务执行完再执行。
简单来说,这两个方法的第二个参数(延时)并不是说何时这些代码会执行,而只是说何时把回调加入到任务队列。如果添加到队列后,主线程被其他任务占用,那么回调不会马上执行。