【问题标题】:Issue with setTimeout in repeating a function [duplicate]重复功能时 setTimeout 的问题[重复]
【发布时间】:2021-01-29 00:24:24
【问题描述】:

我正在尝试创建一个每隔 x 秒重复一次的函数,但我不确定它是否重复。 我的代码:

function myfunction() {
  if (nonimportant) {
    do something;
  }
  else {
    do something else;
  }
  setTimeout(myfunction(),1000);
}

【问题讨论】:

标签: javascript


【解决方案1】:

这是 .setInterval() 的完美用例(向下滚动到 setTimeout() 下方的 setIntervall() 部分

var myVar = setInterval(myTimer, 1000);

function myTimer() {
  var d = new Date();
  var t = d.toLocaleTimeString();
  console.log(t);
}

【讨论】:

    【解决方案2】:

    把 () 取出来:

    function myfunction() {
      if (nonimportant) {
        do something;
      }
      else {
        do something else;
      }
      setTimeout(myfunction,1000);
    }
    

    https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout

    【讨论】:

      【解决方案3】:

      典型错误:您将函数的结果而不是函数本身传递给setTimeout

      function myfunction() {
        if (nonimportant) {
          do something;
        }
        else {
          do something else;
        }
        setTimeout(myfunction,1000);  //notice there's no brackets
      }
      

      【讨论】:

      • “典型错误:”回答重复。相反,请投票以重复关闭。
      • @HereticMonkey 我同意它可以是重复的,但为什么只有我的答案被否决了?
      • 您有足够的代表投票结束。另一个有足够代表的人提出了一种不同的方法,这很好,尽管仍然使删除问题变得更加困难。
      • 什么?不同的方法???代码完全相同:检查所有答案!
      • 我做到了。显然忽略了setIntervalsetTimeout 之间的区别。但我已经完成了。您获得了一张反对票,这使您想象中的互联网点数减少了无限小。要么吸取教训,要么不吸取教训。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多