setInterval с определенным идентификационным номером

#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, и использовать этот идентификатор для вашего внутреннего кода. Но в тот момент, когда вы хотели бы очистить интервал, вы должны использовать исходный. Мне было бы интересно использовать вариант, в котором это имеет смысл.