]> source.dussan.org Git - jquery.git/commitdiff
Deferred: .resolve(), .reject() and .notify() now set the callback context to the...
authorjaubourg <j@ubourg.net>
Fri, 7 Dec 2012 14:14:12 +0000 (15:14 +0100)
committerjaubourg <j@ubourg.net>
Fri, 7 Dec 2012 14:14:12 +0000 (15:14 +0100)
src/deferred.js
test/unit/deferred.js

index e525fc06871ce053990853c7f69070e53cf22206..d842065704e201d41a608f91934364d1a4d2f74c 100644 (file)
@@ -32,7 +32,7 @@ jQuery.extend({
                                                                                        .fail( newDefer.reject )
                                                                                        .progress( newDefer.notify );
                                                                        } else {
-                                                                               newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
+                                                                               newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, [ returned ] );
                                                                        }
                                                                } :
                                                                newDefer[ action ]
@@ -70,8 +70,11 @@ jQuery.extend({
                                }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
                        }
 
-                       // deferred[ resolve | reject | notify ] = list.fire
-                       deferred[ tuple[0] ] = list.fire;
+                       // deferred[ resolve | reject | notify ]
+                       deferred[ tuple[0] ] = function() {
+                               deferred[ tuple[0] + "With" ]( promise, arguments );
+                               return this;
+                       };
                        deferred[ tuple[0] + "With" ] = list.fireWith;
                });
 
index 80827c64170723ea00b77694280ea631cffd70f2..86b0b34116a0344cee113656662fec4551b4be85 100644 (file)
@@ -292,7 +292,7 @@ test( "jQuery.Deferred.then - context", function() {
        defer.resolve( 2 );
 
        piped.done(function( value ) {
-               strictEqual( this.promise(), piped, "default context gets updated to latest defer in the chain" );
+               strictEqual( this, piped, "default context gets updated to latest promise in the chain" );
                strictEqual( value, 6, "proper value received" );
        });
 });
@@ -395,8 +395,8 @@ test( "jQuery.when - joined", function() {
                                expected = shouldResolve ? [ 1, 1 ] : [ 0, undefined ],
                                expectedNotify = shouldNotify && [ willNotify[ id1 ], willNotify[ id2 ] ],
                                code = id1 + "/" + id2,
-                               context1 = defer1 && jQuery.isFunction( defer1.promise ) ? defer1 : undefined,
-                               context2 = defer2 && jQuery.isFunction( defer2.promise ) ? defer2 : undefined;
+                               context1 = defer1 && jQuery.isFunction( defer1.promise ) ? defer1.promise() : undefined,
+                               context2 = defer2 && jQuery.isFunction( defer2.promise ) ? defer2.promise() : undefined;
 
                        jQuery.when( defer1, defer2 ).done(function( a, b ) {
                                if ( shouldResolve ) {