[jquery] jQuery.active 함수

다음 jQuery 함수에 대한 추가 정보를 찾으려고했습니다.

jQuery.active

서버에 대한 활성 연결 수를 테스트하는 방법에 대해 설명하며 연결 ​​수가 0 일 때 참으로 평가됩니다.

나는 jQuery 사이트에서이 기능에 대한 정보를 찾을 수 없었고, 내가 어디에서 할 수 있는지 아는 사람이 있는지 궁금했다.



답변

이것은 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 요청은 (인해 멈출 때 통해 중단 또는 Ajax 호출 기능 실행 )beforeSendreturn falsecomplete

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

이로 인해 $.ajaxStop()이벤트가 발생하고 요청 수가 0으로 감소하여 마지막 동시 AJAX 호출이 완료되었습니다. 다른 글로벌 AJAX 핸들러는 길을 따라 거기에 화재뿐만 아니라.


답변

JSONP 요청과 함께 jQuery.active를 사용하려는 사람 (예 : 나처럼)은 다음과 같이 활성화해야합니다.

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

실패를 포착하려면 JSONP 요청에 시간 초과가 필요합니다.


답변