как setTimeout действует как setInterval в приведенном ниже коде часов, даже если setTimeout выполняется только один раз? - PullRequest
2 голосов
/ 23 июня 2019

пожалуйста, посмотрите мой код, чтобы узнать проблему !!!

это проблема?

  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 голосов
/ 23 июня 2019

enter image description here

  1. Действует как setInterval, потому что вызывает себя каждые 0,5 секунды рекурсивно: setTimeout(startTime, 500)

  2. Вы правы, он запускается каждые ~ 0,5 сек, а не 1 сек как обычные часы.Возможно, они думали, что логика в startTime займет 0,5 секунды, поэтому вместе это займет 1 секунду, но, очевидно, это не так.

...