寻找可以让我在几毫秒后将true转换为false的javascript代码

寻找可以让我在几毫秒后将true转换为false的javascript代码,javascript,if-statement,wait,Javascript,If Statement,Wait,我对javascript和一般的编码非常陌生,所以我可能会使用一些措辞,但我希望你能理解我在寻找什么 我只是想知道最简单的方法是什么,在几秒钟后将一个正确的语句转换成一个错误的语句 if (ship.shooting = true) { (what would go here?) ship.shooting = false; } 上面的语句显然不起作用,因为一旦该语句被读取为true,它就会立即返回false。那么,有没有一行代码我可以放在中间,

我对javascript和一般的编码非常陌生,所以我可能会使用一些措辞,但我希望你能理解我在寻找什么

我只是想知道最简单的方法是什么,在几秒钟后将一个正确的语句转换成一个错误的语句

    if (ship.shooting = true) {
        (what would go here?)
        ship.shooting = false;
    }
上面的语句显然不起作用,因为一旦该语句被读取为true,它就会立即返回false。那么,有没有一行代码我可以放在中间,基本上是说等待

如果这是真的 等一下。--> 然后将其设置为false


我希望我的问题有意义,并提前表示感谢

您可以将此代码中的函数声明为异步,并等待这样的承诺:

async function doStuff(){
  ...
  if (ship.shooting = true) {
    await new Promise(resolve => setTimeout(resolve, 1000))
    ship.shooting = false;
  }
}
本例中的代码将停止执行并在1000毫秒后继续

    if (ship.shooting = true) {
        (what would go here?)
        ship.shooting = false;
    }
如果函数不应停止执行,也可以使用setTimeout()

function doStuff(){
  ...
  if (ship.shooting = true) {
    setTimeout(() => {    
      ship.shooting = false;
    }, 1000)
  }
}

您可以将此代码所在的函数声明为async,并等待如下承诺:

async function doStuff(){
  ...
  if (ship.shooting = true) {
    await new Promise(resolve => setTimeout(resolve, 1000))
    ship.shooting = false;
  }
}
本例中的代码将停止执行并在1000毫秒后继续

    if (ship.shooting = true) {
        (what would go here?)
        ship.shooting = false;
    }
如果函数不应停止执行,也可以使用setTimeout()

function doStuff(){
  ...
  if (ship.shooting = true) {
    setTimeout(() => {    
      ship.shooting = false;
    }, 1000)
  }
}

您是否希望等待一秒钟而不执行任何其他操作,或者希望条件在一秒钟后翻转,但同时允许其他事情发生(如接受来自键盘的用户输入、在屏幕上绘制图片等)?在此期间仍允许发生其他事情。只是“ship.shooting”的特定功能需要在切换为false之前保持一秒钟或更短的时间,听起来像是在做游戏。伟大的通常,游戏循环会将滴答之间经过的时间记录为“增量时间”(
dt
delta
deltaTime
,或类似),更新对象可以使用这些时间。这使您的游戏运行更加可靠,因为使用诸如Promises或
setTimeout()
之类的异步方法可能并不总是按预期执行。比方说,一个记号几乎从1s开始,在更新此
船舶时,1s已经过去了。到那个时候它可能已经被翻转了,但它不应该被翻转,因为其他在同一时间发射但更新较早的飞船并没有获得这个优势。你想等一秒钟而不做任何其他事情,还是想在一秒钟后状态翻转,但同时允许其他事情发生(如接受用户从键盘输入、在屏幕上绘制图片等)?在这段时间内还允许发生其他事情。只是特定的函数“ship.shooting”需要在切换为false之前保持一秒钟或更短的时间为true。听起来像是在做游戏。太棒了!通常,游戏循环会将两个刻度之间经过的时间记录为“delta time”(
dt
delta
deltaTime
,或类似),更新对象时可能会使用它们。这会使游戏运行更可靠,就像使用Promises或
setTimeout()等异步方法一样
可能并不总是按预期执行。比如,一个刻度从几乎1s开始,在更新这艘
飞船时,1s已经过去了。它可能在那个时候被翻转了,但它不应该被翻转,因为其他在同一刻度中发射但更新较早的飞船没有获得这种优势。