Ini adalah variabel yang digunakan jQuery secara internal, tetapi tidak punya alasan untuk disembunyikan, jadi itu ada untuk digunakan. Tunggu dulu, ini menjadi jquery.ajax.active
rilis berikutnya . Tidak ada dokumentasi karena terekspos tetapi tidak di API resmi, banyak hal seperti ini sebenarnya, seperti jQuery.cache
(kemana semua jQuery.data()
pergi).
Saya menebak di sini dengan penggunaan aktual di perpustakaan, tampaknya ada di sana secara eksklusif untuk mendukung $.ajaxStart()
dan $.ajaxStop()
(yang akan saya jelaskan lebih lanjut), tetapi mereka hanya peduli jika 0 atau tidak ketika permintaan dimulai atau berhenti. Tapi, karena tidak ada alasan untuk menyembunyikannya, Anda dapat melihat jumlah sebenarnya dari permintaan AJAX simultan yang sedang terjadi.
Ketika jQuery memulai permintaan AJAX, ini terjadi :
if ( s.global && ! jQuery.active++ ) {
jQuery.event.trigger( "ajaxStart" );
}
Inilah yang menyebabkan $.ajaxStart()
peristiwa diaktifkan, jumlah koneksi hanya berubah dari 0 menjadi 1 ( jQuery.active++
bukan 0 setelah ini, dan !0 == true
), ini berarti permintaan simultan pertama saat ini dimulai. Hal yang sama terjadi di ujung yang lain. Ketika permintaan AJAX berhenti (karena suatu beforeSend
batalkan melaluireturn false
atau ajax panggilan complete
fungsi berjalan ):
if ( s.global && ! --jQuery.active ) {
jQuery.event.trigger( "ajaxStop" );
}
Inilah yang menyebabkan $.ajaxStop()
peristiwa diaktifkan, jumlah permintaan turun menjadi 0, artinya panggilan AJAX serentak terakhir selesai. The penangan AJAX global lainnya api di sana sepanjang jalan juga.
$.active
, btw.$
sekadar alias untukjQuery
, jadi keduanya masih benar?jQuery
tanpanoConflict
.Bagi siapa pun yang mencoba menggunakan jQuery.active dengan permintaan JSONP (seperti saya dulu), Anda harus mengaktifkannya dengan ini:
Perlu diingat bahwa Anda memerlukan waktu tunggu pada permintaan JSONP Anda untuk mendeteksi kegagalan.
sumber