• Как при наступлении события, отложить выполнение setInterval?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Сохранять id таймера, возвращаемое из setInterval(). При наступлении события останавливать тот interval, и через нужную паузу запускать новый с той же функцией.

    Второй вариант – внутри вызываемой функции делать проверку некого флага паузы. Если тот установлен, ничего не выполнять. При наступлении события выставлять тот флаг и через N секунд снимать его:
    Примерно так
    var flag = false;
    
    this.next = function() {
    	that.img[i].classList.remove("activeImg");
    	i++;
    	if (i >= that.img.length) i = 0;
    	that.img[i].classList.add("activeImg");
    };
    
    setInterval(
      function() {
    	  if(flag) return;
    	  that.next()
      }, 
      Math.floor(Math.random() * (5000 - 2000 + 1)) + 2000
    );
    
    function onEvent(){
    	flag = true;
    	setTimeout(()=>{ flag=false}, 3000);
    }
    Ответ написан
    1 комментарий