Problema in attesa fino alla fine dell'esecuzione della funzione prima che tenti di eseguire nuovamente
-
03-07-2019 - |
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?
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.