Javascript 使用settimeout停止函数重新执行一秒钟

Javascript 使用settimeout停止函数重新执行一秒钟,javascript,settimeout,Javascript,Settimeout,我想阻止我的函数在最后一次执行后的一秒钟内重新执行。我试过下面的方法,但不起作用 函数displayOut(){ //图像 document.getElementById(“imgBox”).style.backgroundImage=“url(“+db.rooms[roomLoc].roomImg+”)”; //双对数盒 diologueBox.innerHTML=“;//清除框 teleTyperDiologue(数据库室[roomLoc]。说明+ “该房间包含:”+ (功能(){ 设x=

我想阻止我的函数在最后一次执行后的一秒钟内重新执行。我试过下面的方法,但不起作用

函数displayOut(){
//图像
document.getElementById(“imgBox”).style.backgroundImage=“url(“+db.rooms[roomLoc].roomImg+”)”;
//双对数盒
diologueBox.innerHTML=“;//清除框
teleTyperDiologue(数据库室[roomLoc]。说明+
“该房间包含:”+
(功能(){
设x=“”;
for(设i=0;i}
您可以使用如下模式:

var执行=false;
函数myFunc(){
如果(!正在执行){
执行=真;
//代码
console.log('Executed!');
//结束代码
setTimeout(函数(){
执行=假;
}, 1000);
}
}

设置间隔(myFunc,100)这一项将实现:

function run () {
  console.log('Im running');
  pause(1000);
};

function pause(s) {
  console.log('Im paused');
  setTimeout(() =>{
    run();
  }, s)
};

run();
上面的代码将每1秒运行一次,但如果您想确保函数在您决定之前不能再次运行,则可以使用以下标志:

let canExecute = true;
function run () {
  if (canExecute) {
    console.log('Im running');
    canExecute = false;
    pause(1000);
  }
};

function pause(s) {
  console.log('Im paused');
    setTimeout(() =>{
      canExecute = true;
    }, s)
};

run();
run();
run();
setTimeout(() =>{
  run();
}, 2000)

此代码将执行run函数两次,第一次是准时执行,然后在2秒后再执行一次。

尝试使用下划线中的throttle()或debounce(),其中一个应该适合您的需要,但由于某种原因,当函数再次运行时,它会阻止背景图像的更新。@buckoo这听起来像是另一个问题?@buckoo抱歉,似乎有一行是无意中修改的。请使用更新重试。恐怕是相同的问题:(@buckoo)控制台中有错误吗?你能提供一个提琴吗?JavaScript不能设置为“等待”,它本质上是非阻塞的。你需要将一个函数传递给setTimeout,该函数将在指定的时间后执行。我建议你阅读更多关于如何在JS中使用回调的内容。尝试过这个,但它不会停止函数的执行g、 谢谢,我已经试过了,但这并不能阻止我再次执行这个函数。我会尝试使用它,但它似乎不起作用。