使用 setTimeout 解决 setInterval 计时器不准的问题
我们都知道 setInterval 的回调函数并不是到了时间立即执行,而是等系统计算资源空闲下来后才会执行。 下一次触发时间是在setInterval回调函数执行完毕后才开始的。如果setInterval内执行的计算过于耗时,或者有其他耗时任务在执行,setInterval的计时就会叠加,越来越不准。关于这个问题我们其实可以通过 setTimeout 来解决。 全部代码如下:
let isStop = false
function fixedTime(interval) {
console.time();
let time = setTimeout(() => {
clearTimeout(time);
if (isStop) {
console.timeEnd();
//逻辑处理部分...
fixedTime(interval);
}
}, interval);
}
fixedTime(1000);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
运行结果:
上次更新: 2024/01/30, 00:35:17
- 01
- linux 在没有 sudo 权限下安装 Ollama 框架12-23
- 02
- Express 与 vue3 使用 sse 实现消息推送(长连接)12-20