В одностраничном веб-приложении карта города отображается с использованием слоя c трафика.
В настоящее время работает переключатель режима реального времени, который, если он включен, должен обновлять слой c трафика на карте каждые 5 минут.
Когда режим прямой трансляции выключен, 5-минутный таймер должен go выключиться.
Для этого требования есть подсказки для двух вариантов из нескольких блогов и сообщений.
1. Javascript методы: setInterval и clearInterval
2. Использование веб-сокетов
Так как у этого веб-приложения всего пара пользователей, помимо отсутствия знаний о веб-сокетах, было решено использовать go с первым вариантом. Однако возникла проблема с успешным выполнением clearInterval (), когда переключатель переходит в выключенный режим.
В приведенном ниже коде значение тайм-аута, передаваемое в clearInterval, всегда не определено.
const handleOkBtnClick = (): void => {
let timeout;
if(live){
timeout = setInterval(updateFilter, 60000);
console.log('live ON == '+ timeout); // prints number like 89 or 146
}else{
console.log('live Off == '+ timeout); //always prints 'undefined'
clearInterval(timeout);
}
}
}
Это похоже на условное выполнение setInterval и clearInterval не является вариантом.
Переход к javascript разработке через десять лет, что мне не хватает?
Любые предложения по альтернативному подходу будут приняты.
Использование ReactJS v16 .11, Машинопись v3.7