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