setTimeout inside loop 运行 代码 1 次然后等待并重复

setTimeout inside loop run code 1 time then wait and repeat

想知道是否有更好的方法来执行此操作或将大小限制为函数的方法

let timerOut = false;
if (!timerOut) {
  //do code
  timerOut = true;
  setTimeout(function () {
    timerOut = false;
  }, 6000);
}   

我需要它所以如果 x 是真的它会做一些事情并等待设定的时间然后如果 x 仍然是真的重复

这在 setInterval

中运行

setInterval(() => {
  console.log(x);
  tick()
}, 1000);

var x = true;

function tick() {
  if (x) {
    let timerOut = false;
    if (!timerOut) {
      x = false
      timerOut = true;
      setTimeout(function() {
        x = true;
        timerOut = false;
      }, 6000);
    }
  }
}

x 不会出现在只是让它循环的 setTimeout 中 x 会被其他因素改变


let x = setInterval(() => {
  console.log("hi")
  clearInterval(x)
}, 3000)

^回答

您可以使用 setInterval 其中 returns 'id' 的区间。

如果您存储了该 ID,则可以随时删除该间隔。

let x = setInterval(()=>{console.log("hi")}, 3000)

clearInterval(x) //deletes that interval