javascript - 在发射完成后而不是在发射之前更改 IF 语句中的值
问题描述
我想要在这里实现的是当IF
语句是对其他值true
的更改,因此它与之前分配的值不匹配,所以当战斗结束时fightID
我无法立即通过控制台运行发射。win-fight
但我得到的只是Bad id
现在,所以它甚至不会运行win-fight
发射。我该如何解决这个问题?
var uuid = uuid4();
socket.on('attack', () => {
var fightID = uuid;
if(enemyHealth === 0 && uuid4.valid(uuid) === fightID|| userHealth === 0
&& enemyHealth === 0 && uuid4.valid(uuid) === fightID) {
fightID = 185;
socket.emit('win-fight'); // next emit
} else {
console.log('Bad id');
}
});
解决方案
如果我正确理解您的问题,则应通过以下调整来解决该问题:
var uuid = uuid4();
var isFightFinished = false;
// Declare fightID here
var fightID = uuid;
socket.on('attack', () => {
// Remove fightID from here
// var fightID = uuid;
if(isFightFinished === false && (enemyHealth <= 0 || userHealth <= 0)) {
// Now you're newly assigned fightID is remembered for the next attack
// event
fightID = 185;
isFightFinished = true;
socket.emit('win-fight'); // next emit
} else {
console.log('Bad id');
}
});
推荐阅读
- node.js - 在 node.js 中使用什么更安全、更快速地生成会话 ID?
- sql - 优化 SQLite3 中重复行的删除查询?
- json - 如何在 CosmosDB 中查询子列表到所需的输出
- javascript - 如何使用 Javascript 从覆盖在一个大背景图像上的文本和图像生成新图像?
- html - 尝试单击网页中的按钮,但找不到类名
- c++ - 如何复制到结构内的数组?
- python - Django停止没有任何错误
- c++ - 多类实例碰撞检测问题
- ios - 如何在不结束保留周期的情况下安全地将自己分配给自己的委托?
- flutter - 在 for 循环中等待 firestore 文档