diff options
author | Nicolas HENRY <icewil@gmail.com> | 2014-12-09 12:57:15 +0000 |
---|---|---|
committer | Oleg Gaidarenko <markelog@gmail.com> | 2014-12-25 15:39:28 +0300 |
commit | ab20d9d24f0a95df382c02e9ef3dcc4adb86e4f1 (patch) | |
tree | d847a370e87e34235163537d5d5683e87fb999fd | |
parent | 5a0867d1e94794fbfc3be1f18f4c0a168dc18d95 (diff) | |
download | jquery-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.js | 4 | ||||
-rw-r--r-- | test/unit/deferred.js | 22 |
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" ); + }); + +}); |