Ошибка ожидания, пока не завершится выполнение функции, прежде чем она попытается выполнить снова
-
03-07-2019 - |
Вопрос
Я использую $ (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);
}
... но это только я.