Skip to content

Commit eaa3e9f

Browse files
gibson042timmywil
authored andcommitted
Ajax: Golf away 21 bytes
Close gh-2699
1 parent e0c25ab commit eaa3e9f

File tree

1 file changed

+28
-30
lines changed

1 file changed

+28
-30
lines changed

src/ajax.js

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,9 @@ jQuery.extend( {
406406
// Url cleanup var
407407
urlAnchor,
408408

409+
// Request state (becomes false upon send and true upon completion)
410+
completed,
411+
409412
// To know if global events are to be dispatched
410413
fireGlobals,
411414

@@ -435,9 +438,6 @@ jQuery.extend( {
435438
requestHeaders = {},
436439
requestHeadersNames = {},
437440

438-
// The jqXHR state
439-
state = 0,
440-
441441
// Default abort message
442442
strAbort = "canceled",
443443

@@ -448,7 +448,7 @@ jQuery.extend( {
448448
// Builds headers hashtable if needed
449449
getResponseHeader: function( key ) {
450450
var match;
451-
if ( state === 2 ) {
451+
if ( completed ) {
452452
if ( !responseHeaders ) {
453453
responseHeaders = {};
454454
while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
@@ -462,22 +462,22 @@ jQuery.extend( {
462462

463463
// Raw string
464464
getAllResponseHeaders: function() {
465-
return state === 2 ? responseHeadersString : null;
465+
return completed ? responseHeadersString : null;
466466
},
467467

468468
// Caches the header
469469
setRequestHeader: function( name, value ) {
470-
var lname = name.toLowerCase();
471-
if ( !state ) {
472-
name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
470+
if ( completed == null ) {
471+
name = requestHeadersNames[ name.toLowerCase() ] =
472+
requestHeadersNames[ name.toLowerCase() ] || name;
473473
requestHeaders[ name ] = value;
474474
}
475475
return this;
476476
},
477477

478478
// Overrides response content-type header
479479
overrideMimeType: function( type ) {
480-
if ( !state ) {
480+
if ( completed == null ) {
481481
s.mimeType = type;
482482
}
483483
return this;
@@ -487,16 +487,16 @@ jQuery.extend( {
487487
statusCode: function( map ) {
488488
var code;
489489
if ( map ) {
490-
if ( state < 2 ) {
491-
for ( code in map ) {
492-
493-
// Lazy-add the new callback in a way that preserves old ones
494-
statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
495-
}
496-
} else {
490+
if ( completed ) {
497491

498492
// Execute the appropriate callbacks
499493
jqXHR.always( map[ jqXHR.status ] );
494+
} else {
495+
496+
// Lazy-add the new callbacks in a way that preserves old ones
497+
for ( code in map ) {
498+
statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
499+
}
500500
}
501501
}
502502
return this;
@@ -560,7 +560,7 @@ jQuery.extend( {
560560
inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
561561

562562
// If request was aborted inside a prefilter, stop there
563-
if ( state === 2 ) {
563+
if ( completed ) {
564564
return jqXHR;
565565
}
566566

@@ -642,7 +642,7 @@ jQuery.extend( {
642642

643643
// Allow custom headers/mimetypes and early abort
644644
if ( s.beforeSend &&
645-
( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
645+
( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
646646

647647
// Abort if not done already and return
648648
return jqXHR.abort();
@@ -671,7 +671,7 @@ jQuery.extend( {
671671
}
672672

673673
// If request was aborted inside ajaxSend, stop there
674-
if ( state === 2 ) {
674+
if ( completed ) {
675675
return jqXHR;
676676
}
677677

@@ -683,18 +683,17 @@ jQuery.extend( {
683683
}
684684

685685
try {
686-
state = 1;
686+
completed = false;
687687
transport.send( requestHeaders, done );
688688
} catch ( e ) {
689689

690-
// Propagate exception as error if not done
691-
if ( state < 2 ) {
692-
done( -1, e );
693-
694-
// Simply rethrow otherwise
695-
} else {
690+
// Rethrow post-completion exceptions
691+
if ( completed ) {
696692
throw e;
697693
}
694+
695+
// Propagate others as results
696+
done( -1, e );
698697
}
699698
}
700699

@@ -703,13 +702,12 @@ jQuery.extend( {
703702
var isSuccess, success, error, response, modified,
704703
statusText = nativeStatusText;
705704

706-
// Called once
707-
if ( state === 2 ) {
705+
// Ignore repeat invocations
706+
if ( completed ) {
708707
return;
709708
}
710709

711-
// State is "done" now
712-
state = 2;
710+
completed = true;
713711

714712
// Clear timeout if it exists
715713
if ( timeoutTimer ) {

0 commit comments

Comments
 (0)