我想在一个间隔内执行一个函数。是的,我可以使用setInterval,但我需要间隔时间同步到时间戳什么的。
就像我想在两个不同的设备上执行间隔一样,它们应该在完全相同的秒内运行,如果可能的话,甚至是ms。但是,如果我使用setInterval方法,则取决于脚本何时启用,这些间隔将被抵消。
我已经试过了,但有点奇怪。
setInterval(() => {
if (new Date().getTime() % 1000 * 10 == 0) {
console.log(new Date().toLocaleTimeString())
}
}, 1);发布于 2021-04-21 09:54:26
和我一样,想要在两个不同的设备上执行间隔,如果可能的话,它们应该在完全相同的秒甚至毫秒内运行。
不能保证您能做到这一点,尤其是因为其中一个设备上的JavaScript线程可能在那个精确的时刻忙着做其他事情(它甚至可能被捆绑几秒钟)。
除此之外,还有同步设备的问题。备选方案有:
// 2021-04-21目标=新日期(Date.UTC(2021,3,21,14,30));// 3=4月,从0= Jan = Date.now()开始;如果(延迟< 0) {/它已经晚于该}{ setTimeout(() => { //您的代码在这里},延迟);
但是,同样,如果JavaScript线程在那个精确的时刻很忙,那么当线程空闲时,计时器回调将在稍后运行。
上面的代码计划了一个单个事件,但是如果您需要一个重复的事件,您可以执行相同的基本逻辑:确定您希望下一个回调发生的日期/时间,找出从现在到那时(Date.now() - target)之间是多少毫秒,并将回调时间安排在那么多毫秒之后。
https://stackoverflow.com/questions/67193250
复制相似问题