@Roma741

Не работает задержка?

нашел функцию , до конца не понимаю как она работает кто может помочь сказать почему не работает мне надо чтобы скрул работал не чаше чем рас в 2 секунды
function debounce(f, ms) {
          
            let timer = null;
          
            return function (...args) {
              const onComplete = () => {
                f.apply(this, args);
                timer = null;
              }
          
              if (timer) {
                clearTimeout(timer);
              }
          
              timer = setTimeout(onComplete, ms);
            };
        }

    var delay = false;

$('.window').on('mousewheel', function (event) {
      
        var pozition = $(document).scrollTop();
        var block2 = $(".main_step").offset().top
        var elemId = $(this).attr('id'),
        scrollDir = event.deltaY;
        var indicatorL = $(".indicator_main").data("counter"); 

         if (elemId == 'steps' && scrollDir < 0 && delay === false) {

            if(indicatorL != "4"){
                $("#sli-" + indicatorL).css("display","none");
                
                indicatorL = indicatorL + 1;
                $("#sli-" + indicatorL ).css("display","block");
                $(".indicator_main").data("counter", indicatorL);
                $(".indicator_main").animate({ "left": "+=25%" }, "slow" );
                $(".indicator_num").text("0" + indicatorL);
                $(".step_nr").text("0" + indicatorL);
            }
         }
         delay = true;
         var f = function() {
              var delay = false;
              return delay;
            };

        delay = debounce(f, 2000); 
        console.log(delay );   

    });
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 1
DarthJS
@DarthJS
debounce(f, 2000) - эта функция принимает первым аргументов функцию, которая должна вызываться с задержкой, а второй аргумент время задержки. То есть вам нужно передать туда функцию, которая должна срабатывать на скрол. В вашем же случае задержка работает для вот этой функции:
var f = function() {
              var delay = false;
              return delay;
            };
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы