时间的递归函数的执行

时间:2019-06-26 11:27:17

标签: javascript performance

我有一个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 个答案:

答案 0 :(得分:1)

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>