@dasch-swiss/dsp-js
Version:
JavaScript library that handles API requests to Knora
32 lines • 1.19 kB
JavaScript
import { retry, timer } from "rxjs";
/**
*
* Retries failed HTTP requests.
*
* @param delayMs delay in milliseconds before the request is retried.
* @param maxRetries maximum number of retries.
* @param retryOnErrorStatus HTTP error status codes for which the request is retried.
* @param logError if true, error is written to the console error log.
*
* @category Internal
*/
export function retryOnError(delayMs, maxRetries, retryOnErrorStatus, logError) {
var retries = maxRetries;
// inspired by https://medium.com/angular-in-depth/retry-failed-http-requests-in-angular-f5959d486294
return function (src) {
return src.pipe(retry({
count: maxRetries,
delay: function (error, retryCount) {
if (retryOnErrorStatus.indexOf(error.status) !== -1) {
if (logError)
console.error("HTTP request failed:", "status:", error.status, "retries:", retryCount, "error:", error);
return timer(delayMs);
}
else {
throw error;
}
}
}));
};
}
//# sourceMappingURL=retryOnError.js.map