diff options
Diffstat (limited to 'www/wiki/extensions/Translate/resources/js/jquery.ajaxdispatcher.js')
-rw-r--r-- | www/wiki/extensions/Translate/resources/js/jquery.ajaxdispatcher.js | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/www/wiki/extensions/Translate/resources/js/jquery.ajaxdispatcher.js b/www/wiki/extensions/Translate/resources/js/jquery.ajaxdispatcher.js index fcdeb41f..68d48e74 100644 --- a/www/wiki/extensions/Translate/resources/js/jquery.ajaxdispatcher.js +++ b/www/wiki/extensions/Translate/resources/js/jquery.ajaxdispatcher.js @@ -1,4 +1,4 @@ -( function ( $ ) { +( function () { 'use strict'; /** @@ -7,6 +7,7 @@ * @author Niklas Laxström * * @param {callable[]} list List of callbacks returning promises. + * @param {number} maxRetries Maximum number of times a failed promise is retried. * @return {jQuery.Promise} */ function ajaxDispatcher( list, maxRetries ) { @@ -17,6 +18,8 @@ return $.when( helper( list, maxRetries ) ) .then( function ( promises ) { return deferred.resolve( promises ); + } ).fail( function ( errmsg ) { + return deferred.reject( errmsg ); } ); } @@ -33,8 +36,10 @@ rest = list.slice( 1 ); retries = 0; - retrier = function () { - var promise = this; + retrier = function ( result, promise ) { + if ( !promise.state ) { + return; + } if ( promise.state() === 'rejected' ) { if ( retries < maxRetries ) { @@ -50,11 +55,13 @@ } }; - first.call().always( retrier ); + first.call().always( retrier ).catch( function ( errmsg ) { + return deferred.reject( errmsg ); + } ); return deferred; } $.extend( $, { ajaxDispatcher: ajaxDispatcher } ); -}( jQuery ) ); +}() ); |