【问题标题】:Schedule a setTimeout within a setInterval在 setInterval 内安排 setTimeout
【发布时间】:2018-06-08 20:45:26
【问题描述】:

我有一个 javascript 程序,它执行一个用 blockly 生成的句子 生成如下:

我有一个 setInterval 导致此代码每秒重复一次,并且在此代码中是块生成的函数。此代码可以包含一个或多个 setTimeout。如果 setTimeout 持续时间超过 setInterval 持续时间的 1 秒,我会中断循环,因为 setInterval 不会等待该时间过去,它会再次执行。有没有办法解决这个问题?

setInterval(function(){
    setTimeout(function(){
       console.log("Hola")
    }, 5000)
}, 1000);

为什么 console.log 每秒运行一次?

【问题讨论】:

    标签: javascript timer settimeout setinterval


    【解决方案1】:

    不清楚你真正想要什么。

    也许是这个?每 5 秒尝试一次超时,但前提是还没有超时

    var tId;
    setInterval(function() {
      if (!tId) tId = setTimeout(function() {
        console.log("Hola", tId, new Date());
        tId = "";
      }, 5000)
    }, 1000);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 2011-02-11
      相关资源
      最近更新 更多