Problema esperando til função terminar a execução antes de tentar executar novamente

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

Pergunta

Eu estou usando a (janela) .scroll $ (); para especificar uma função a ser chamada para quando o usuário rola muito perto da parte superior ou inferior.

A função leva um segundo para executar, e se eles continuam rolando, ele executa várias vezes antes que a primeira tem mesmo de terminar.

Existe alguma maneira eu posso deixar a função de iniciar a execução e, em seguida, dizer a função $ (janela) .scroll () que ele precisa esperar antes de executar essa função novamente?

Foi útil?

Solução

Você pode definir um booleano que você já está verificando a posição de rolagem:

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

Outras dicas

Eu faria algo assim para questões de escopo evitar / confusão encapsulando os dados em um objeto ... neste caso, o objeto jQuery (no elemento janela):

$(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);
}

... mas isso é só comigo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top