【问题标题】:how setTimeout act like setInterval in the clock code below even setTimeout execute one time only?setTimeout 如何在下面的时钟代码中像 setInterval 一样工作,甚至 setTimeout 只执行一次?
【发布时间】:2019-06-23 00:50:53
【问题描述】:

请查看我的代码以了解问题!!!

这是问题吗?

  1. 为什么他们使用 setTimeout 并且它只执行 1 次,而时钟需要一些方法像 setInterval 一样连续执行?甚至 setInterval 在这段代码中工作,但我的问题是 setTimeout 只执行 1 次,为什么它在这段代码中工作?

  2. 为什么是 500 毫秒,而 1 秒 = 1000?

    请帮帮我

我将 setTimeout 更改为 setInterval 并且两者都工作这使问题变得更大,即使它们不一样,如何在这个示例中做同样的事情?

function startTime() {
    var today = new Date();
    var h = today.getHours();
    var m = today.getMinutes();
    var s = today.getSeconds();
    m = checkTime(m);
    s = checkTime(s);
    document.getElementById('txt').innerHTML = h + ":" + m + ":" + s;
    var t = setTimeout(startTime, 500);
}
function checkTime(i) {
    if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10
    return i;
}

【问题讨论】:

  • 请将代码添加到可以格式化的问题中,而不是作为评论
  • 但很明显setTimeout(startTime, 500) 调用startTime 调用setTimeout(startTime, 500) 调用startTime ......等等......但是,使用setInterval 代替setTimeout错误的做法,因为您将添加越来越多的间隔,因此代码将每半秒运行多次,直到最终,页面可能会变得无响应
  • "请查看我的代码以了解问题!!!"好的;但是在哪里???
  • Jaromanda X : 真的谢谢你,伙计,你现在很棒,我明白了,但是你说的小事 setInterval 错了它多次运行代码“我明白这一点”,而且 setTimeout 调用开始时间和等,也会多次调用该函数,并且会像 setInterval 一样,每 5 秒调用一次开始时间

标签: javascript settimeout timing


【解决方案1】:

  1. 它的行为类似于 setInterval,因为它每 0.5 秒递归调用一次自己:setTimeout(startTime, 500)

  2. 你是对的,它每 ~0.5 秒运行一次,而不是 1 秒作为区域时钟。也许他们认为startTime 中的逻辑需要 0.5 秒,所以加起来需要 1 秒,但显然不是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 2011-12-13
    • 2017-01-24
    • 1970-01-01
    • 2014-03-29
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多