(clearTimeout
- clearInterval
путаница в стороне ...)
Здесь:
if (timerID) return
Таким образом, установка значения timerId в значение null приведет к досрочному возвращению, новый таймаут не будет установлен. Полагаю, именно то, что мы ищем.
timerID = setTimeout(() => {
callback()
timerID = null // <= only by null assigment it's gonna gone...
// clearTimeout(timerID) doesn't work here
И вот, clearTimeout
ничего бы не сделал - тайм-аут уже отмечен, обратный вызов уже вызван, тайм-аут на самом деле больше не существует. Функция выполняется прямо здесь и больше не будет. Если мы хотим предотвратить установку нового тайм-аута, то это
timerID = setTimeout(() => {
- строка, которая не может быть выполнена.