Problema in attesa fino alla fine dell'esecuzione della funzione prima che tenti di eseguire nuovamente

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

Domanda

Sto usando $ (window) .scroll (); per specificare una funzione da chiamare quando l'utente scorre troppo vicino all'inizio o alla fine.

L'esecuzione della funzione richiede un secondo e, se continuano a scorrere, viene eseguita più volte prima ancora che la prima sia terminata.

Esiste un modo per consentire alla funzione di iniziare l'esecuzione e quindi dire alla funzione $ (window) .scroll () che deve attendere prima di eseguire di nuovo quella funzione?

È stato utile?

Soluzione

Potresti impostare un valore booleano che stai già verificando la posizione di scorrimento:

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

Altri suggerimenti

Farei qualcosa del genere per evitare problemi di ambito / confusione incapsulando i dati in un oggetto ... in questo caso, l'oggetto jQuery (sull'elemento finestra):

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

... ma sono solo io.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top