Jest to zmienna, której jQuery używa wewnętrznie, ale nie miała powodu, aby się ukrywać, więc można ją wykorzystać. Tylko jedno ostrzeżenie, to będzie jquery.ajax.active
następne wydanie . Nie ma dokumentacji, ponieważ jest ujawniona, ale nie w oficjalnym API, w rzeczywistości wiele rzeczy jest takich, jak jQuery.cache
(gdzie wszystkiejQuery.data()
idzie).
Zgaduję, że przez rzeczywiste użycie w bibliotece wydaje się być tam wyłącznie do obsługi $.ajaxStart()
i $.ajaxStop()
(co wyjaśnię dalej), ale obchodzi ich tylko to, czy jest 0, czy nie, gdy żądanie zaczyna się lub kończy. Ale ponieważ nie ma powodu, aby to ukrywać, jest on ujawniany, możesz zobaczyć rzeczywistą liczbę jednoczesnych żądań AJAX, które są obecnie wykonywane.
Kiedy jQuery uruchamia żądanie AJAX, dzieje się tak :
if ( s.global && ! jQuery.active++ ) {
jQuery.event.trigger( "ajaxStart" );
}
To jest to, co powoduje uruchomienie $.ajaxStart()
zdarzenia, liczba połączeń właśnie wzrosła z 0 do 1 ( jQuery.active++
nie jest 0 po tym, i !0 == true
), co oznacza, że rozpoczęto pierwsze z bieżących jednoczesnych żądań. To samo dzieje się na drugim końcu. Gdy żądanie AJAX zatrzymania (z powodu na beforeSend
Abort poprzezreturn false
lub połączenia Ajax complete
biegnie funkcyjne )
if ( s.global && ! --jQuery.active ) {
jQuery.event.trigger( "ajaxStop" );
}
To właśnie powoduje uruchomienie $.ajaxStop()
zdarzenia, liczba żądań spadła do 0, co oznacza, że ostatnie jednoczesne połączenie AJAX zostało zakończone. W innych koparki globalny AJAX ogień tam po drodze, jak również.
$.active
, przy okazji.$
po prostu aliasem dlajQuery
, więc oba są nadal prawdziwe?jQuery
beznoConflict
.Dla każdego, kto próbuje używać jQuery.active z żądaniami JSONP (tak jak ja), musisz go włączyć w ten sposób:
Pamiętaj, że będziesz potrzebować limitu czasu na żądanie JSONP, aby wykryć awarie.
źródło