Fonction jQuery.active

J’essayais de trouver plus d’informations sur la fonction jQuery suivante:

jQuery.active 

Il est décrit pour tester le nombre de connexions actives à un serveur et évaluera true lorsque le nombre de connexions est nul.

Je ne trouvais aucune information sur cette fonction sur le site jQuery et je me demandais si quelqu’un savait où je pouvais.

Ceci est une variable utilisée en interne par jQuery, mais n’a aucune raison de se cacher, elle est donc là pour être utilisée. Juste un heads-up, il devient la prochaine version de jquery.ajax.active . Il n’y a pas de documentation car elle est exposée mais pas dans l’API officielle, beaucoup de choses sont comme ça, comme jQuery.cache (où va tout jQuery.data() ).

Je suppose ici par l’utilisation réelle dans la bibliothèque, il semble être exclusivement là pour supporter $.ajaxStart() et $.ajaxStop() (que je vais expliquer plus loin), mais ils se soucient seulement si c’est 0 ou pas quand une demande commence ou s’arrête. Mais, comme il n’y a aucune raison de le cacher, il est exposé au nombre réel de requêtes AJAX simultanées .


Lorsque jQuery démarre une requête AJAX, cela se produit :

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

C’est ce qui provoque le $.ajaxStart() événement $.ajaxStart() , le nombre de connexions est passé de 0 à 1 ( jQuery.active++ n’est pas à 0 après celui-ci et !0 == true ), ce qui signifie le premier des les demandes simultanées en cours ont commencé. La même chose se produit à l’autre bout. Lorsqu’une requête AJAX s’arrête (à cause d’ un beforeSend via return false ou d’un appel ajax, la fonction complete s’exécute ):

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

C’est ce qui provoque le $.ajaxStop() événement $.ajaxStop() , le nombre de requêtes est passé à 0, ce qui signifie que le dernier appel AJAX simultané s’est terminé. Les autres gestionnaires globaux d’AJAX sont également présents .

Pour quiconque essaie d’utiliser jQuery.active avec des requêtes JSONP (comme je l’étais), vous devrez l’activer avec ceci:

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

Gardez à l’esprit que vous aurez besoin d’un délai d’attente sur votre requête JSONP pour détecter les défaillances.