mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Experiment switching to using onreadystatechange rather than a setInterval for Ajax requests. Fixes #5735.
This commit is contained in:
parent
a00e63ea5a
commit
fe6c86d530
43
src/ajax.js
43
src/ajax.js
@ -380,29 +380,21 @@ jQuery.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Wait for a response to come back
|
// Wait for a response to come back
|
||||||
var onreadystatechange = function( isTimeout ) {
|
var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
|
||||||
// The request was aborted, clear the interval and decrement jQuery.active
|
// The request was aborted, clear the interval and decrement jQuery.active
|
||||||
if ( !xhr || xhr.readyState === 0 ) {
|
if ( !xhr || xhr.readyState === 0 ) {
|
||||||
if ( ival ) {
|
requestDone = true;
|
||||||
// clear poll interval
|
xhr.onreadystatechange = function(){};
|
||||||
clearInterval( ival );
|
|
||||||
ival = null;
|
|
||||||
|
|
||||||
// Handle the global AJAX counter
|
// Handle the global AJAX counter
|
||||||
if ( s.global && ! --jQuery.active ) {
|
if ( s.global && ! --jQuery.active ) {
|
||||||
jQuery.event.trigger( "ajaxStop" );
|
jQuery.event.trigger( "ajaxStop" );
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// The transfer is complete and the data is available, or the request timed out
|
// The transfer is complete and the data is available, or the request timed out
|
||||||
} else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
|
} else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
|
||||||
requestDone = true;
|
requestDone = true;
|
||||||
|
xhr.onreadystatechange = function(){};
|
||||||
// clear poll interval
|
|
||||||
if (ival) {
|
|
||||||
clearInterval(ival);
|
|
||||||
ival = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
status = isTimeout === "timeout" ?
|
status = isTimeout === "timeout" ?
|
||||||
"timeout" :
|
"timeout" :
|
||||||
@ -446,19 +438,14 @@ jQuery.extend({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if ( s.async ) {
|
// Timeout checker
|
||||||
// don't attach the handler to the request, just poll it instead
|
if ( s.async && s.timeout > 0 ) {
|
||||||
var ival = setInterval(onreadystatechange, 13);
|
setTimeout(function() {
|
||||||
|
// Check to see if the request is still happening
|
||||||
// Timeout checker
|
if ( xhr && !requestDone ) {
|
||||||
if ( s.timeout > 0 ) {
|
onreadystatechange( "timeout" );
|
||||||
setTimeout(function() {
|
}
|
||||||
// Check to see if the request is still happening
|
}, s.timeout);
|
||||||
if ( xhr && !requestDone ) {
|
|
||||||
onreadystatechange( "timeout" );
|
|
||||||
}
|
|
||||||
}, s.timeout);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the data
|
// Send the data
|
||||||
|
Loading…
Reference in New Issue
Block a user