Package Exports
- tenacious-fetch
- tenacious-fetch/dist/tenacious-fetch.js
- tenacious-fetch/dist/tenacious-fetch.m.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (tenacious-fetch) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
tenacious-fetch
Tiny fetch API wrapper to add support for retries with linear & exponential backoff and timeouts
Table of Contents
Install
This project uses node and npm.
$ npm install tenacious-fetch
$ # OR
$ yarn add tenacious-fetchUsage
import tenaciousFetch from 'tenacious-fetch'
const url = 'https://jsonplaceholder.typicode.com/posts/1'
const normalFetchConfig = {
method: 'GET',
headers: {
"Content-Type": "application/json charset=UTF-8"
},
// Others...
}
const additionalTenaciousFetchConfig = {
fetcher: window.fetch, // Fetch implementation to use, default is window.fetch
retries: 3, // Number of retries, default is 1
retryDelay: 1000 * 3, // Delay in ms before retrying, default is 1000ms
onRetry: ({retriesLeft, retryDelay, response}) => console.log(retriesLeft, retryDelay, response),
retryStatus = [], // Status codes of response that should trigger retry e.g. [500, 404] or just "500".
// defaults to empty array
retryOnFatalError = true // If there a fatal request (no response status), we can choose
// to retry or not
timeout = 1000 * 15, // Timeout in ms before throwing a timeout error for the request.
// Defaults to no timeout (undefined).
factor: .5 // If factor is given, exponential backoff will be performed for retries, otherwise
// linear backoff is used
}
const config = Object.assign({}, normalFetchConfig, additionalTenaciousFetchConfig)
tenaciousFetch(url, config).then(console.log).catch(console.error)Contribute
- Fork it and create your feature branch:
git checkout -b my-new-feature - Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin my-new-feature - Submit a pull request
License
MIT