【问题标题】:When seconds come x, do something当秒到 x 时,做点什么
【发布时间】:2009-12-25 22:50:55
【问题描述】:

我将如何做到这一点: 当秒数到 31 秒时(例如 11:57 31 秒),每分钟都做一些事情。使用 Javasript。

提前致谢。

【问题讨论】:

  • 我不知道如何“倾听”我所想的秒数。
  • 请问您为什么需要这样一个特定的时间间隔?
  • 在特定时间了解在线访客数量。比如1、11、21、...、51的访客数。

标签: javascript time


【解决方案1】:

读取当前时间,计算距离下一次秒为 ':31' 的秒数,然后使用 setTimeout 和适当的延迟。你可以使用这样的东西:

var atSeconds = 31;
var secondsLeft = atSeconds - new Date().getSeconds();
if (secondsLeft <= 0) secondsLeft += 60;
setTimeout(foo, secondsLeft * 1000);

记得在函数foo中再次调用它,让它重复。

【讨论】:

  • 不知何故,我怀疑您是否能够使用 JavaScript 达到如此精确。
  • 也许 setInterval 代替,每分钟做一次。
  • 我不得不建议将字符串传递给 setTimeout。
  • setInterval 可能也可以工作,尽管我不确定如果长时间运行 setInterval 可以保证多少准确度。如果每次调用都晚了几分之一秒,那么该错误可能会随着时间的推移而累积。
  • 嗯,你绝对是对的。使用这种方法,您可以随着时间的推移纠正任何错误。
【解决方案2】:

这样的事情可能会尽可能接近。

function initializeInterval() {
    while (new Date().getSeconds() < 30);
    setInterval(doWork, 60000);
}

function doWork() {

}

【讨论】:

    猜你喜欢
    • 2016-02-02
    • 2016-03-01
    • 2021-10-07
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 2016-04-10
    • 1970-01-01
    相关资源
    最近更新 更多