Ошибка ожидания, пока не завершится выполнение функции, прежде чем она попытается выполнить снова

StackOverflow https://stackoverflow.com/questions/822653

Вопрос

Я использую $ (window) .scroll (); указать функцию для вызова, когда пользователь прокручивает слишком близко к верху или низу.

Функция выполняется за секунду, и если они продолжают прокручиваться, она выполняется несколько раз, прежде чем первая из них даже завершится.

Можно ли как-нибудь разрешить запуску функции и затем сообщить функции $ (window) .scroll (), что ей нужно подождать, прежде чем снова выполнить эту функцию?

Это было полезно?

Решение

Вы можете установить логическое значение, при котором уже проверяется позиция прокрутки:

checkingPosition = false;
$window.scroll(function() {
   if(checkingPosition) return;
   checkingPosition = true;
   //do stuff
   checkingPosition = false;
});

Другие советы

Я бы сделал что-то подобное, чтобы избежать проблем / путаницы в области видимости путем инкапсуляции данных в объект ... в данном случае, в объект jQuery (в элементе window):

$(function() {
    $(window).data('checking_scroll',false);
    $(window).scroll(function() {
        if($(this).scrollTop() >= 200 /* or whatever... */) {
            if($(this).data('checking_scroll') === true) {
                return false;
            } else {
                whatever_function();                   
            }     
        }
    });
});

function whatever_function() {
    $(window).data('checking_scroll',true);
    // do all your stuff...
    $(window).data('checking_scroll',false);
}

... но это только я.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top