Выполнение рекурсивной функции времени - PullRequest
0 голосов
/ 26 июня 2019

У меня есть function startTime(), который обрабатывает часы, показанные на странице, и последняя строка этой функции - var t = setTimeout(function(){ startTime() }, 1000);.

Будучи рекурсивной функцией с тайм-аутом, как это влияет на производительность? С течением времени он потребляет все больше и больше памяти? Я имею в виду, если я оставлю эту страницу открытой в течение одного дня и сравню ее с тем, чтобы она была открыта в течение недели, в чем разница? Если этот подход не так хорош, есть ли лучший для этого? Кроме того, не стесняйтесь давать несколько советов моему коду (стандарты и лучшая типизация).

Спасибо!

Полный код:

function startTime() {
    var today = new Date();
    var h = today.getHours();
    var m = today.getMinutes();
    var s = today.getSeconds();

    // function checkTime(): add a zero in front of numbers<10
    h = checkTime(h);
    m = checkTime(m);
    s = checkTime(s);
    var t_hora = h + ":" + m;
    document.getElementById("clock").innerHTML = t_hour + ":" + s;
    if (s%20 <= 10) {
      document.title = t_hour;
    } else {
    document.title = "My customized title";
  }
  var t = setTimeout(function(){ startTime() }, 1000);
}

function checkTime(i) {
  if (i < 10) {
    i = "0" + i;
  }
return i;
}

1 Ответ

1 голос
/ 26 июня 2019

setTimout не является рекурсивным. Вы просто устанавливаете таймер, который выполняет код снова по истечении времени, если время ожидания не отменено вашим сценарием.

Я бы использовал интервал и более элегантный отступ:

const pad = (num) => ("0" + num).slice(-2);

function startTime() {
  var today = new Date();
  var h = pad(today.getHours());
  var m = pad(today.getMinutes());
  var s = pad(today.getSeconds());

  var t_hour = "" + h + ":" + m;
  document.getElementById("clock").innerHTML = t_hour + ":" + s;
  document.title = (s % 20 <= 10) ? t_hour: "My customized title";
}
var t = setInterval(startTime, 1000);
<span id="clock"></span>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...