有没有什么方法可以使函数像 setInterval 一样,但每次超时都完全相同。 在 setInterval 中,超时根据给定的超时而变化,多一点,少一点,但完全相同的情况非常罕见。
例如:
var before = new Date().getTime();
setInterval(function() {
var after = new Date().getTime();
newTab.window.location=someURL;
console.log((after - before));
before = after;
}, 50000);
打印 50000、50002、50005、50994、50997、49999、50003、49998 等。 我想一直打印 50000
最佳答案
Javascript 仅在一个流程中执行,因此如果同时有另一个进程在执行某项操作,您的定时器功能总是有可能无法及时执行。
如果您真的需要确切的时间间隔,您可以提前阻止任何其他进程的执行并希望最好:
function setExactInterval(handler, time) {
var startTime = Date.now();
setTimeout(function() {
while (true) {
var currentTime = Date.now();
var diff = currentTime - startTime;
if (diff >= time) {
setExactInterval(handler, time);
return handler();
}
}
}, time - 50);
}
如果进程被操作系统阻止,它仍然不准确......
关于javascript - setInterval 精确超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31697508/