Fixes #9446. Context is properly propagated using pipe. If context was the original deferred, then context is updated to next deferred in the chain. Unit tests added.
This commit is contained in:
parent
5b92a5f5ec
commit
139135a98a
2 changed files with 28 additions and 1 deletions
|
@ -122,7 +122,7 @@ jQuery.extend({
|
||||||
if ( returned && jQuery.isFunction( returned.promise ) ) {
|
if ( returned && jQuery.isFunction( returned.promise ) ) {
|
||||||
returned.promise().then( newDefer.resolve, newDefer.reject );
|
returned.promise().then( newDefer.resolve, newDefer.reject );
|
||||||
} else {
|
} else {
|
||||||
newDefer[ action ]( returned );
|
newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -275,6 +275,33 @@ test( "jQuery.Deferred.pipe - deferred (fail)", function() {
|
||||||
strictEqual( value3, 6, "result of filter ok" );
|
strictEqual( value3, 6, "result of filter ok" );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test( "jQuery.Deferred.pipe - context", function() {
|
||||||
|
|
||||||
|
expect(4);
|
||||||
|
|
||||||
|
var context = {};
|
||||||
|
|
||||||
|
jQuery.Deferred().resolveWith( context, [ 2 ] ).pipe(function( value ) {
|
||||||
|
return value * 3;
|
||||||
|
}).done(function( value ) {
|
||||||
|
strictEqual( this, context, "custom context correctly propagated" );
|
||||||
|
strictEqual( value, 6, "proper value received" );
|
||||||
|
});
|
||||||
|
|
||||||
|
var defer = jQuery.Deferred(),
|
||||||
|
piped = defer.pipe(function( value ) {
|
||||||
|
return value * 3;
|
||||||
|
});
|
||||||
|
|
||||||
|
defer.resolve( 2 );
|
||||||
|
|
||||||
|
piped.done(function( value ) {
|
||||||
|
strictEqual( this.promise(), piped, "default context gets updated to latest defer in the chain" );
|
||||||
|
strictEqual( value, 6, "proper value received" );
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
test( "jQuery.when" , function() {
|
test( "jQuery.when" , function() {
|
||||||
|
|
||||||
expect( 23 );
|
expect( 23 );
|
||||||
|
|
Loading…
Add table
Reference in a new issue