@Adsdasus

SetTimeout не хочет очищаться, и продолжает отсчёт?

Добрый вечер читающим и помогающим!
Задача: при вызове функции ChatInput обновлять отсчёт времени, при этом **обязательно** требуется, чтобы она ежесекундно выводила на экран информацию до конца отсчёта, т.е. нельзя просто взять setTimeout(Countdown,30*1000).

function ChatInput (number) {
	//...

	clearTimeout(timeout);

	timeout = Countdown(30);
	//...
};

function Countdown(i) {
	if ((i != 0)) {
		return setTimeout(Countdown,1000,i-1);
	} else {
		//...
	};
};


Но возникает проблема в том, что timer не удаляется, а продолжать свою работу как ни в чём не бывало. Более того, оба setTimeout продолжают работать вместе, из-за чего на экран попеременно выводится значение одной и другой функции.
У меня вопрос: что не так? А если такой вариант решения невозможен, то какая есть альтернатива этому решению?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
IvanU7n
@IvanU7n
nothing interesting here
для периодического вызова можно использовать setInterval() и clearInterval(), но это мелочи
используемая переменная должна быть объявлена вне функции где она объявлена, тогда можно будет работать с идентификатором, возвращаемым setTimeout()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы