aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas HENRY <icewil@gmail.com>2014-12-09 12:57:15 +0000
committerOleg Gaidarenko <markelog@gmail.com>2014-12-25 15:39:28 +0300
commitab20d9d24f0a95df382c02e9ef3dcc4adb86e4f1 (patch)
treed847a370e87e34235163537d5d5683e87fb999fd
parent5a0867d1e94794fbfc3be1f18f4c0a168dc18d95 (diff)
downloadjquery-ab20d9d24f0a95df382c02e9ef3dcc4adb86e4f1.tar.gz
jquery-ab20d9d24f0a95df382c02e9ef3dcc4adb86e4f1.zip
Deferred: Fix $.when with resolved deferred and progress callbacks
Fixes gh-1894 Closes gh-1915
-rw-r--r--src/deferred.js4
-rw-r--r--test/unit/deferred.js22
2 files changed, 24 insertions, 2 deletions
diff --git a/src/deferred.js b/src/deferred.js
index 5f6e0a2fa..939b58f37 100644
--- a/src/deferred.js
+++ b/src/deferred.js
@@ -132,9 +132,9 @@ jQuery.extend({
for ( ; i < length; i++ ) {
if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
resolveValues[ i ].promise()
+ .progress( updateFunc( i, progressContexts, progressValues ) )
.done( updateFunc( i, resolveContexts, resolveValues ) )
- .fail( deferred.reject )
- .progress( updateFunc( i, progressContexts, progressValues ) );
+ .fail( deferred.reject );
} else {
--remaining;
}
diff --git a/test/unit/deferred.js b/test/unit/deferred.js
index 6e4d5c440..40f936219 100644
--- a/test/unit/deferred.js
+++ b/test/unit/deferred.js
@@ -436,3 +436,25 @@ test( "jQuery.when - joined", function() {
deferreds.futureSuccess.resolve( 1 );
deferreds.futureError.reject( 0 );
});
+
+test( "jQuery.when - resolved", function() {
+
+ expect( 6 );
+
+ var a = jQuery.Deferred().notify( 1 ).resolve( 4 ),
+ b = jQuery.Deferred().notify( 2 ).resolve( 5 ),
+ c = jQuery.Deferred().notify( 3 ).resolve( 6 );
+
+ jQuery.when( a, b, c ).progress(function( a, b, c ) {
+ strictEqual( a, 1, "first notify value ok" );
+ strictEqual( b, 2, "second notify value ok" );
+ strictEqual( c, 3, "third notify value ok" );
+ }).done(function( a, b, c ) {
+ strictEqual( a, 4, "first resolve value ok" );
+ strictEqual( b, 5, "second resolve value ok" );
+ strictEqual( c, 6, "third resolve value ok" );
+ }).fail(function() {
+ ok( false, "Error on resolve" );
+ });
+
+});