#javascript #setinterval
#javascript #setinterval
Вопрос:
По независящим от меня причинам я ищу способ создать setInterval с определенным идентификатором.
Например:
когда вы создаете setInterval и присваиваете его переменной, например, так:
var myInterval = setInterval(function(){..},100);
myInterval фактически равен числу.
таким образом, когда вы очищаете интервал, вы можете либо использовать clearInterval(myInterval), либо использовать число, которому он равен.
myIntertval === 9;
clearInterval(9);
Как я могу сделать myInterval === 20. и, таким образом, присвоить моему setInterval идентификатор 20.
Возможно ли это вообще? Или я просто глупый и должен все делать правильно.
Комментарии:
1. Согласен с @hindmost, зачем вам нужен интервал с определенным номером?
2. У меня была ошибка, из-за которой мой setInterval создавался несколько раз. Поэтому вместо его отладки я выбрал быстрое решение для зацикливания с 0 — его ID, чтобы удалить его. О чем я теперь полностью сожалею.
3. @Dustin Silk Вы создаете несколько интервалов?
Ответ №1:
Возможно ли это вообще? Или я просто глупый и должен все делать правильно.
Вы должны сделать это надлежащим образом (использовать рефакторинг!). Как уже говорилось, вы можете исправить это, «сопоставив» любой идентификатор с другим значением, просто сохранив его в объекте:
var myIntervals={};
myIntervals[0]=setInterval(function(){..},100);
myIntervals[20]=setInterval(function(){..},100);
myIntervals["hello"]=setInterval(function(){..},100);
Тогда у вас будет сохранено что-то вроде:
{ 0: <ID_first interval>,
20: <ID_another_interval>,
hello: <<ID_another_interval_more>
}
и тогда вы можете сделать:
clearInterval(myIntervals[requiredId]);
Ответ №2:
Идентификатор, возвращаемый ‘setInterval’, уникален, поэтому нет необходимости в другом уникальном идентификаторе. Теоретически, вы могли бы создать карту, которая сопоставляет ваш желаемый идентификатор с тем, который возвращается setInterval, и использовать этот идентификатор для вашего внутреннего кода. Но в тот момент, когда вы хотели бы очистить интервал, вы должны использовать исходный. Мне было бы интересно использовать вариант, в котором это имеет смысл.