首页 > 解决方案 > 在发射完成后而不是在发射之前更改 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');
       }

    });

标签: javascriptsocket.io

解决方案


如果我正确理解您的问题,则应通过以下调整来解决该问题:

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');
   }

});

推荐阅读