newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, [ returned ] );
}
} :
- newDefer[ action ]
+ function() {
+ newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, arguments );
+ }
);
});
fns = null;
// 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;
test( "jQuery.Deferred.then - context", function() {
- expect( 4 );
+ expect( 7 );
var context = {};
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;
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() {