@@ -7,9 +7,9 @@ jQuery.extend({
7
7
8
8
Deferred : function ( func ) {
9
9
var tuples = [
10
- // action, add listener, listener list
11
- [ "resolve" , "done" , jQuery . Callbacks ( "once memory" ) ] ,
12
- [ "reject" , "fail" , jQuery . Callbacks ( "once memory" ) ] ,
10
+ // action, add listener, listener list, final state
11
+ [ "resolve" , "done" , jQuery . Callbacks ( "once memory" ) , "resolved" ] ,
12
+ [ "reject" , "fail" , jQuery . Callbacks ( "once memory" ) , "rejected" ] ,
13
13
[ "notify" , "progress" , jQuery . Callbacks ( "memory" ) ]
14
14
] ,
15
15
state = "pending" ,
@@ -59,19 +59,22 @@ jQuery.extend({
59
59
60
60
// Add list-specific methods
61
61
jQuery . each ( tuples , function ( i , tuple ) {
62
- var list = tuple [ 2 ] , stateString ;
62
+ var list = tuple [ 2 ] ,
63
+ stateString = tuple [ 3 ] ;
63
64
64
65
// promise[ done | fail | progress ] = list.add
65
66
promise [ tuple [ 1 ] ] = list . add ;
66
67
67
68
// Handle state
68
69
if ( i < 2 ) {
69
- stateString = tuple [ 0 ] . replace ( / e ? $ / , "ed" ) ;
70
70
list . add ( function ( ) {
71
+ // state = [ resolved | rejected ]
71
72
state = stateString ;
72
- tuples [ i ^ 1 ] [ 2 ] . disable ( ) ;
73
- tuples [ 2 ] [ 2 ] . lock ( ) ;
74
- } ) ;
73
+
74
+ // [ reject_list | resolve_list ].disable; progress_list.lock
75
+ } , tuples [ i ^ 1 ] [ 2 ] . disable , tuples [ 2 ] [ 2 ] . lock ) ;
76
+
77
+ // [ isResolved | isRejected ] = [ resolve_list | reject_list ].fired
75
78
promise [ "isR" + stateString . substr ( 1 ) ] = list . fired ;
76
79
}
77
80
0 commit comments