Из-за чего странное поведение setInterval?

Есть код:
if (typeof window.autoLoadMessages !== 'undefined')
{
	clearInterval(window.autoLoadMessages);
	
	delete window.autoLoadMessages;
}

window.autoLoadMessages = function()
{
	if (document.getElementById('open_messenger') !== null)
	{
		alert($('#open_messenger').attr('pm_id'));
	}
	
	else
	{
		clearInterval(window.autoLoadMessages);
	}
}

Смею предположить, человек который подсказать может, спрашивать что это не будет.

Имеется вызов:
setInterval(window.autoLoadMessages, 1000);

И вот собственно в чём парадокс, когда первый раз вызывается метод, всё работает хорошо, также хорошо он удаляется, т.е. clearInterval работает. Но странность в том, что при 2,3,4 ... 99 попытках, setInterval вызывает метод window.autoLoadMessages не 1 раз в 1 минуту, а 2,3,4 ... 99 согласно схеме выше...
Как это вообще так, мб я что-то не так написал? Подскажите.

Спасибо.
  • Вопрос задан
  • 2550 просмотров
Решения вопроса 1
@KoMaTo3
Вы, видимо, не сохраняете id таймера.
var timerId = setInterval( .... );
и удаление
clearInterval( timerId );
Сейчас же Вы удаляете совсем не таймер.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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