ZiEnTenIn
@ZiEnTenIn
А я просто человек.

Как остановить функцию или обновить ее аргументы?

Мне в принципе не важно остановить функцию или обновить аргументы(если это возможно), но вот в чем суть:
Есть код JS:
function Villager(count) {
		if(VillagerFlag === true) {
			setInterval(() => {	
				veg = veg + (count * 0.02);
				fruit = fruit + (count * 0.02);
				berr = berr + (count * 0.02);

				document.getElementById('veg-num').innerHTML = veg.toFixed(3);
				document.getElementById('veg-num-r').innerHTML = veg.toFixed(3);
				document.getElementById('fruit-num').innerHTML = fruit.toFixed(3);
				document.getElementById('fruit-num-r').innerHTML = fruit.toFixed(3);
				document.getElementById('berr-num').innerHTML = berr.toFixed(3);
				document.getElementById('berr-num-r').innerHTML = berr.toFixed(3);
			}, 5000);	
		}
		else {
			return;
		}

//остальной код...

function buyVillager() {
		if(money >= 20) {
			VallagerFlag = false;
			VillagerCount = VillagerCount + 1;
			Villager(VillagerCount);
			console.log(VillagerCount);
		}
		else {
			alert("У вас недостаточно монет...");
		}
	}


Функция buyVillager выполняется по нажатию кнопки в html-файле. Всё хорошо. Но при повторном нажатии функция вызывается снова(хотя стоит return) + вызывается новая функция.

Нужно что бы вызывалась только последняя вызванная функция, а "старая её версия - удалялась". Или просто старая версия обновляла свои аргументы. Это возможно реализовать?

Если нужно - залью на jsfiddle(только я не знаю как делиться кодом там...).
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
ZiEnTenIn
@ZiEnTenIn Автор вопроса
А я просто человек.
function Villager(count) {
  return setInterval(() => {   
    ...
  }, 5000); 
}

var timer;
function buyVillager() {
  clearInterval(timer);
  if(money >= 20) {
    VillagerCount = VillagerCount + 1;
    timer = Villager(VillagerCount);
    ...
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы