mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Deferred: Propagate progress correctly from unwrapped promises
Progress parameters are now correctly propagated from a deferred to which another deferred resolved unwrapping it. Thanks to @gibson042 for the report and a clear description of the problem and the needed fix. Fixes gh-3062 Closes gh-3150
This commit is contained in:
parent
e06fda69f0
commit
d5dae259eb
@ -162,7 +162,7 @@ jQuery.extend( {
|
||||
resolve( maxDepth, deferred, Identity, special ),
|
||||
resolve( maxDepth, deferred, Thrower, special ),
|
||||
resolve( maxDepth, deferred, Identity,
|
||||
deferred.notify )
|
||||
deferred.notifyWith )
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -768,6 +768,36 @@ QUnit.test( "jQuery.Deferred - notify and resolve", function( assert ) {
|
||||
} );
|
||||
} );
|
||||
|
||||
QUnit.test( "jQuery.Deferred - resolved to a notifying deferred", function( assert ) {
|
||||
|
||||
assert.expect( 2 );
|
||||
|
||||
var deferred = jQuery.Deferred(),
|
||||
done = assert.async( 2 );
|
||||
|
||||
deferred.resolve( jQuery.Deferred( function( notifyingDeferred ) {
|
||||
notifyingDeferred.notify( "foo", "bar" );
|
||||
notifyingDeferred.resolve( "baz", "quux" );
|
||||
} ) );
|
||||
|
||||
// Apply an empty then to force thenable unwrapping.
|
||||
// See https://github.com/jquery/jquery/issues/3000 for more info.
|
||||
deferred.then().then( function() {
|
||||
assert.deepEqual(
|
||||
[].slice.call( arguments ),
|
||||
[ "baz", "quux" ],
|
||||
"The fulfilled handler receives proper params"
|
||||
);
|
||||
done();
|
||||
}, null, function() {
|
||||
assert.deepEqual(
|
||||
[].slice.call( arguments ),
|
||||
[ "foo", "bar" ],
|
||||
"The progress handler receives proper params"
|
||||
);
|
||||
done();
|
||||
} );
|
||||
} );
|
||||
|
||||
QUnit.test( "jQuery.when(nonThenable) - like Promise.resolve", function( assert ) {
|
||||
"use strict";
|
||||
|
Loading…
Reference in New Issue
Block a user