Javascript 更新间隔中的值

Javascript 更新间隔中的值,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我试图让函数在下一个间隔更新其值 /*jshint esversion: 6*/ const commando = require('discord.js-commando'); const db = require('../../config/db'); module.exports = class Battle extends commando.Command { constructor(client) { super(client, { name: 'battle

我试图让函数在下一个间隔更新其值

/*jshint esversion: 6*/
const commando = require('discord.js-commando');
const db = require('../../config/db');

module.exports = class Battle extends commando.Command {
  constructor(client) {
    super(client, {
      name: 'battle',
      aliases: ['fight'],
      group: 'actions',
      memberName: 'battle',
      description: 'What mob to battle.',
      args: [
        {
          key: 'mob',
          prompt: 'What mob do you want to attack? Mob ID only!',
          type: 'integer',
        },
      ],
    });
  }

  run(msg, { mob }) {
    var times = 0;
    var clearBattle = false;
    var mobs = null;
    var userData = msg.member.user; // Set user variable

    var userSQL = 'SELECT * FROM users_meta WHERE userid = ?';
    db.query(userSQL, userData.id, (err, row) => { // User Query
      if (row[0] === undefined) { // If user is not registered, kill process.
        return msg.channel.send('You are not registered!');
      } else {
        userData.game = row[0];
        var mobSQL = 'SELECT * FROM mobs WHERE id = ?';
        db.query(mobSQL, mob, (err, row) => { // Mob Query
          if (row[0] === undefined) { // if mob doesnt exist, kill process.
            return msg.channel.send('That mob doesn\'t exist');
          } else { // If registered and mob exists, start the battle and assign mob
            mobs = row[0];
            if (userData.interval === undefined || userData.interval === false) {
              userData.interval = setInterval(() => {
                battle(mob);
              }, 6000);
              battle(mob);
            } else {
              return mob;
            }
          }



          // Start battle loop function
          function battle(mob) {
            db.query(userSQL, userData.id, (err, row) => {
              userData.game = row[0];
            });

            console.log(mob);
            if (times < 10) {
              msg.channel.send('Six Seconds for ' + userData.username +
              '(' + userData.game.str + ')' + '. Fighting mob ' + mobs.name + '(' + mobs.id + ').');
              times++;
            } else {
              clearInterval(userData.interval);
              userData.interval = false;
            }
          }
        });
      }
    });
  }

};
目前的情况是: !战斗1将与上述暴徒作战

但是如果我想改变暴徒!战斗2它会改变井的价值。。。战斗中的一切都在发挥作用。我还没有根据暴徒id进行任何计算,所以可能还不太清楚我想要什么

编辑:我还在挣扎。我什么都在试。如果我只是清除间隔并再次创建它,这将很容易,但我希望它等待重复以更新信息。

我找到了一个答案:

    if (userData.interval === undefined || userData.interval === false) {
      userData.interval = setInterval(() => {
        battle(mob);
        userData.intervalTime = Date.now();
      }, 6000);
      battle(mob);
    } else {
      var timing = userData.intervalTime + 5900 - Date.now();
      if (timing < 0) {
        timing = 0;
      }

      setTimeout(() => {
        clearInterval(userData.interval);
        userData.interval = setInterval(() => {
          battle(mob);
          userData.intervalTime = Date.now();
        }, 6000);
        battle(mob);
      }, timing);
    }