@@ -71,11 +71,9 @@ jQuery.extend( {
7171 } ,
7272 then : function ( onFulfilled , onRejected , onProgress ) {
7373 var maxDepth = 0 ;
74- function resolve ( depth , deferred , callbacks , handler , special ) {
74+ function resolve ( depth , deferred , handler , special ) {
7575 return function ( ) {
76-
77- // Recover null/undefined context from global `this`
78- var that = depth === 0 ? callbacks . context : this ,
76+ var that = this ,
7977 args = arguments ,
8078 mightThrow = function ( ) {
8179 var returned , then ;
@@ -115,10 +113,8 @@ jQuery.extend( {
115113 if ( special ) {
116114 then . call (
117115 returned ,
118- resolve ( maxDepth , deferred , callbacks , Identity ,
119- special ) ,
120- resolve ( maxDepth , deferred , callbacks , Thrower ,
121- special )
116+ resolve ( maxDepth , deferred , Identity , special ) ,
117+ resolve ( maxDepth , deferred , Thrower , special )
122118 ) ;
123119
124120 // Normal processors (resolve) also hook into progress
@@ -129,11 +125,9 @@ jQuery.extend( {
129125
130126 then . call (
131127 returned ,
132- resolve ( maxDepth , deferred , callbacks , Identity ,
133- special ) ,
134- resolve ( maxDepth , deferred , callbacks , Thrower ,
135- special ) ,
136- resolve ( maxDepth , deferred , callbacks , Identity ,
128+ resolve ( maxDepth , deferred , Identity , special ) ,
129+ resolve ( maxDepth , deferred , Thrower , special ) ,
130+ resolve ( maxDepth , deferred , Identity ,
137131 deferred . notify )
138132 ) ;
139133 }
@@ -209,7 +203,6 @@ jQuery.extend( {
209203 resolve (
210204 0 ,
211205 newDefer ,
212- tuples [ 0 ] [ 3 ] ,
213206 jQuery . isFunction ( onProgress ) ?
214207 onProgress :
215208 Identity ,
@@ -222,7 +215,6 @@ jQuery.extend( {
222215 resolve (
223216 0 ,
224217 newDefer ,
225- tuples [ 1 ] [ 3 ] ,
226218 jQuery . isFunction ( onFulfilled ) ?
227219 onFulfilled :
228220 Identity
@@ -234,7 +226,6 @@ jQuery.extend( {
234226 resolve (
235227 0 ,
236228 newDefer ,
237- tuples [ 2 ] [ 3 ] ,
238229 jQuery . isFunction ( onRejected ) ?
239230 onRejected :
240231 Thrower
@@ -256,39 +247,34 @@ jQuery.extend( {
256247 var list = tuple [ 2 ] ,
257248 stateString = tuple [ 5 ] ;
258249
259- list . add ( function ( ) {
260-
261- // Handle state
262- if ( stateString ) {
250+ // promise.progress = list.add
251+ // promise.done = list.add
252+ // promise.fail = list.add
253+ promise [ tuple [ 1 ] ] = list . add ;
263254
264- // state = "resolved" (i.e., fulfilled)
265- // state = "rejected"
266- state = stateString ;
255+ // Handle state
256+ if ( stateString ) {
257+ list . add (
258+ function ( ) {
267259
268- // progress_callbacks.lock
269- tuples [ 0 ] [ 2 ] . lock ( ) ;
260+ // state = "resolved" (i.e., fulfilled)
261+ // state = "rejected"
262+ state = stateString ;
263+ } ,
270264
271265 // rejected_callbacks.disable
272266 // fulfilled_callbacks.disable
273- tuples [ 3 - i ] [ 2 ] . disable ( ) ;
274- }
275-
276- // Fire .then handlers, recovering null/undefined context from global `this`
277- // progress_handlers.fire
278- // fulfilled_handlers.fire
279- // rejected_handlers.fire
280- tuple [ 3 ] . fireWith ( list . context , arguments ) ;
281- } ) ;
267+ tuples [ 3 - i ] [ 2 ] . disable ,
282268
283- // promise.progress = list.add
284- // promise.done = list.add
285- // promise.fail = list.add
286- promise [ tuple [ 1 ] ] = list . add ;
269+ // progress_callbacks.lock
270+ tuples [ 0 ] [ 2 ] . lock
271+ ) ;
272+ }
287273
288- // deferred.notifyWith = list.fireWith
289- // deferred.resolveWith = list.fireWith
290- // deferred.rejectWith = list.fireWith
291- deferred [ tuple [ 0 ] + "With" ] = list . fireWith ;
274+ // progress_handlers.fire
275+ // fulfilled_handlers.fire
276+ // rejected_handlers.fire
277+ list . add ( tuple [ 3 ] . fire ) ;
292278
293279 // deferred.notify = function() { deferred.notifyWith(...) }
294280 // deferred.resolve = function() { deferred.resolveWith(...) }
@@ -297,6 +283,11 @@ jQuery.extend( {
297283 deferred [ tuple [ 0 ] + "With" ] ( this === deferred ? undefined : this , arguments ) ;
298284 return this ;
299285 } ;
286+
287+ // deferred.notifyWith = list.fireWith
288+ // deferred.resolveWith = list.fireWith
289+ // deferred.rejectWith = list.fireWith
290+ deferred [ tuple [ 0 ] + "With" ] = list . fireWith ;
300291 } ) ;
301292
302293 // Make the deferred a promise
0 commit comments