Eu tenho uma página quando, se o usuário estiver perto da parte inferior da página, carrega a próxima página.
Eu mudei recentemente para jQuery e agora use o jQuery.ajax()
para obter os dados. No entanto, agora não consigo verificar se o xhr já está carregando, fazendo a página carregar vários xhrs quando o usuário está perto da parte inferior.
Meu ouvinte é:
$(document).scroll(function () {
if(/* scrollbar is near bottom */)
loadxhr(dat++); //function that calls jQuery.ajax()
}
});
Basicamente, você pode acompanhar o readyState da chamada em um escopo global?
Respostas:
1 para resposta № 1Eu só teria uma variável (fora da função)
var scrolling = 0;
Quando chegar a hora de chamar a função ajax, verifique se a rolagem é igual a 0 e, caso contrário, não faça nada; se for igual, defina-o como 1, chame a função ajax e retorne-o a 0 no retorno de chamada deste último.
Como o equivalente a um "bloqueio" emsistemas multithreading preventivos, exceto que você realmente não precisa de um bloqueio aqui (bom também, porque o javascript não os possui ;-) porque seu segmento de controle só é interrompido quando você chama a função ajax, não em pontos arbitrários no seu código como no multithreading preemptivo.
1 para resposta № 2
talvez confira .ajaxStart () e .ajaxStop () para eventos que informarão quando as chamadas estão em andamento?