jQuery.активная функция


Я пытался найти дополнительную информацию о следующей функции jQuery:

jQuery.active

Он описан для проверки количества активных подключений к серверу и будет оценивать true, когда количество подключений равно нулю.

Я не мог найти никакой информации об этой функции на сайте jQuery и задавался вопросом, знает ли кто-нибудь, где я могу.

2 90

2 ответа:

это переменная, которую jQuery использует внутри, но не имеет причин скрывать, поэтому ее можно использовать. Просто голову вверх,становится jquery.ajax.active следующий релиз. Там нет документации, потому что это открытыми но не в официальном API, много вещей, как это на самом деле, как jQuery.cache (где jQuery.data() идет).

я предполагаю, что здесь фактический использование в библиотеке, кажется, есть исключительно для поддержки $.ajaxStart() и $.ajaxStop() (что я объясню дальше), но им все равно, если это 0 или нет, когда запрос начинается или останавливается. Но, так как нет никаких причин, чтобы скрыть его, он подвергается вы можете увидеть фактическое количество одновременно AJAX запросы в настоящее время продолжается.


когда jQuery запускает запрос AJAX,это происходит:

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

это то, что вызывает $.ajaxStart() событие для запуска, количество соединений просто пошло от 0 до 1 (jQuery.active++ не 0 после этого, и !0 == true), это означает первый из текущих одновременно запросы начались. То же самое происходит и на другом конце провода. Когда запрос AJAX останавливается (из-за a beforeSend прерывание по return false или ajax call complete функция работает):

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

вот что вызывает $.ajaxStop() событие для запуска, количество запросов снизилось до 0, что означает последний одновременно AJAX-вызов завершен. Элемент другие глобальные обработчики AJAX огонь там по пути, а также.

для тех, кто пытается использовать jQuery.активный с запросами JSONP (как и я) вам нужно будет включить его с помощью этого:

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

имейте в виду, что вам понадобится тайм-аут на ваш запрос JSONP, чтобы поймать сбои.