setTimeout如何像下面的时钟代码中的setInterval一样运行,甚至setTimeout仅执行一次?

时间:2019-06-23 00:50:53

标签: javascript settimeout timing

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

这是问题吗?

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

1 个答案:

答案 0 :(得分:0)

enter image description here

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

  2. 您是对的,它每隔〜0.5秒运行一次,而不是区域时钟每1秒运行一次。也许他们认为startTime中的逻辑将花费0.5秒,因此加在一起将花费1秒,但是,显然这是不正确的。