使 JavaScript 间隔与实际时间同步

Pec*_*ius 3 javascript time

我想让秒数与实时 ( new Date()) 秒同步,这样如果页面在秒中加载,它就可以工作。

setInterval(() => {
    console.log("hey im not synchronized");
}, 1000);
Run Code Online (Sandbox Code Playgroud)

那可能吗?

Nur*_*yev 9

那可能吗?

是的,像这样:

setTimeout(() => {
    setInterval(() => console.log("hey im synchronized"), 1000)
}, 1000 - new Date().getMilliseconds());
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这将在开始时尽可能接近,但如果间隔运行很长时间,它可能会发散。如果您需要始终保持精确,则应定期进行此类检查。 (3认同)
  • @blex是对的。JS 中的超时和间隔通常可能高达几十毫秒。此外,如果存在一些对 CPU 要求较高的任务,以至于没有空闲窗口来执行间隔任务,则失同步将会增加。 (2认同)