寻找可以让我在几毫秒后将true转换为false的javascript代码
我对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。那么,有没有一行代码我可以放在中间,
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已经过去了。它可能在那个时候被翻转了,但它不应该被翻转,因为其他在同一刻度中发射但更新较早的飞船没有获得这种优势。