summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/resources/js/jquery.ajaxdispatcher.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/resources/js/jquery.ajaxdispatcher.js')
-rw-r--r--www/wiki/extensions/Translate/resources/js/jquery.ajaxdispatcher.js17
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 ) );
+}() );