javascript - setTimeout 如何在下面的时钟代码中像 setInterval 一样工作,甚至 setTimeout 只执行一次?

标签 javascript settimeout timing

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

这就是问题所在?

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

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

    请帮帮我

我用 setInterval 更改了 setTimeout 并且两者都有效这使问题变得更大如何在这个例子中做同样的事情,即使它们不一样?

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;
}

最佳答案

enter image description here

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

  2. 你是对的,它每 ~0.5 秒运行一次,而不是作为区域时钟运行 1 秒。也许他们认为 startTime 中的逻辑将花费 0.5 秒,所以合在一起将花费 1 秒,但是,显然这不是真的。

关于javascript - setTimeout 如何在下面的时钟代码中像 setInterval 一样工作,甚至 setTimeout 只执行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56720227/

相关文章:

javascript - 在 jQuery 中搜索字符串数组

javascript - 无法使用 GAS 在 HTML 对话框中使用 Jquery UI 效果

javascript - 如何在不为输出数组获取空值的情况下拆分字符串

javascript - 获取所有 4 个字母的单词正则表达式

javascript - 如何通过包含延迟的循环来遍历队列? (JavaScript)

c# - 如何设置测试TCP连接超时?

wolfram-mathematica - Mathematica 执行时错误 : symbol names

javascript - Node.js - 有没有一种方法可以使用返回的 timeoutObject 访问传递给 'setTimeout' 的参数?

c++ - 如何测量在多核系统上运行的多个应用程序之间的消息延迟?

jQuery 定时事件