Skip to content
Permalink
Browse files

Propagete context of returned deferred object in Deferred.then

  • Loading branch information...
nanto committed Jan 6, 2013
1 parent a95f357 commit cdac527be80fb2c6585ce6f53a83d4a9144fbf4d
Showing with 21 additions and 3 deletions.
  1. +4 −2 src/deferred.js
  2. +17 −1 test/unit/deferred.js
@@ -35,7 +35,9 @@ jQuery.extend({
newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, [ returned ] );
}
} :
newDefer[ action ]
function() {
newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, arguments );
}
);
});
fns = null;
@@ -72,7 +74,7 @@ jQuery.extend({

// deferred[ resolve | reject | notify ]
deferred[ tuple[0] ] = function() {
deferred[ tuple[0] + "With" ]( promise, arguments );
deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
return this;
};
deferred[ tuple[0] + "With" ] = list.fireWith;
@@ -273,7 +273,7 @@ test( "jQuery.Deferred.then - deferred (progress)", function() {

test( "jQuery.Deferred.then - context", function() {

expect( 4 );
expect( 7 );

var context = {};

@@ -284,6 +284,12 @@ test( "jQuery.Deferred.then - context", function() {
strictEqual( value, 6, "proper value received" );
});

jQuery.Deferred().resolve().then(function() {
return jQuery.Deferred().resolveWith(context);
}).done(function() {
strictEqual( this, context, "custom context of returned deferred correctly propagated" );
});

var defer = jQuery.Deferred(),
piped = defer.then(function( value ) {
return value * 3;
@@ -295,6 +301,16 @@ test( "jQuery.Deferred.then - context", function() {
strictEqual( this, piped, "default context gets updated to latest promise in the chain" );
strictEqual( value, 6, "proper value received" );
});

var defer2 = jQuery.Deferred(),
piped2 = defer2.then();

defer2.resolve( 2 );

piped2.done(function( value ) {
strictEqual( this, piped2, "default context gets updated to latest promise in the chain (without passing function)" );
strictEqual( value, 2, "proper value received (without passing function)" );
});
});

test( "jQuery.when", function() {

0 comments on commit cdac527

Please sign in to comment.
You can’t perform that action at this time.