我正在制作一款使用discord .js API的游戏,我尝试在10s后运行代码,如果变量播放(真/假)没有改变(为了避免第一个人完成他的游戏,第二个人启动新游戏并在几秒钟后得到时间),所以我已经完成了10s计时器,但我无法解决第二个问题,所以这是我的代码的简化版本:
if(message.content === "?guess"){
playing = true;
setTimeout(function(){
message.reply("time's up!");
playing = false;
}, 10000);
}
只需在setTimeout回调中添加一个if条件来检查他们是否还在玩,然后才结束游戏。
const globalGameTimeout = null;
...
if(message.content === "?guess"){
playing = true;
globalGameTimeout = setTimeout(function(){
if (playing) {
message.reply("time's up!");
playing = false;
}
}, 10000);
}
....
if (user guessed correctly or game ends in some other way) {
clearTimeout(globalGameTimeout);
}
clearartimeout(..)将确保旧的setTimeout不会在另一个玩家结束前一个游戏并开始一个新游戏时仍然错误地执行。