Función jQuery.active

Estaba tratando de encontrar más información sobre la siguiente función jQuery:

jQuery.active 

Se describe para probar el número de conexiones activas a un servidor y evaluará verdadero cuando la cantidad de conexiones sea cero.

No pude encontrar información sobre esta función en el sitio jQuery y me preguntaba si alguien sabía dónde podría.

Esta es una variable que jQuery usa internamente, pero que no tenía motivos para ocultar, por lo que está ahí para usar. Solo un jquery.ajax.active , se convierte en la siguiente versión de jquery.ajax.active . No hay documentación porque está expuesta pero no en la API oficial, muchas cosas son así en realidad, como jQuery.cache (donde va todo jQuery.data() ).

Estoy adivinando aquí por el uso real en la biblioteca, parece estar allí exclusivamente para soportar $.ajaxStart() y $.ajaxStop() (que explicaré más adelante), pero solo les importa si es 0 o no cuando una solicitud comienza o se detiene. Pero, como no hay motivo para ocultarlo, está expuesto a que puede ver el número real de solicitudes simultáneas de AJAX que se están llevando a cabo actualmente.


Cuando jQuery inicia una solicitud de AJAX, sucede esto :

 if ( s.global && ! jQuery.active++ ) { jQuery.event.trigger( "ajaxStart" ); } 

Esto es lo que hace que se active el $.ajaxStart() , el número de conexiones pasó de 0 a 1 ( jQuery.active++ no es 0 después de este, y !0 == true ), esto significa que el primero de los solicitudes simultáneas actuales comenzaron. Lo mismo sucede en el otro extremo. Cuando se detiene una solicitud AJAX (debido a un aborto beforeSend través de return false o se ejecuta una llamada ajax complete función ):

 if ( s.global && ! --jQuery.active ) { jQuery.event.trigger( "ajaxStop" ); } 

Esto es lo que ocasiona que se active el $.ajaxStop() , el número de solicitudes bajó a 0, lo que significa que finalizó la última llamada AJAX simultánea . Los otros manejadores globales de AJAX también se disparan a lo largo del camino.

Para cualquiera que intente usar jQuery.active con solicitudes JSONP (como yo), deberá habilitarlo con esto:

 jQuery.ajaxPrefilter(function( options ) { options.global = true; }); 

Tenga en cuenta que necesitará un tiempo de espera en su solicitud JSONP para detectar fallas.