Comments (10)
Would very much like to see timeouts implemented - preferably with an exponential increase in timeout duration on subsequent retries. This is a much needed and essential feature coming from relying on it with axios.
Can we hook into the signal: AbortSignal.timeout(8000)
mentioned here: whatwg/fetch#951 (comment)?
Something like:
$fetch(event.req.url, {
baseURL: config.public.baseUrl,
params,
method,
body,
retry: 10,
timeout: 2000, // signal: AbortSignal.timeout(2000),
...
from ofetch.
implemented in #268 (finally!)
from ofetch.
Very much needed!
from ofetch.
+1, would be a very useful feature to have. Currently have to hack around to get this to work in nuxt
from ofetch.
Some context: https://stackoverflow.com/questions/46946380/fetch-api-request-timeout
from ofetch.
from ofetch.
retryTimeout
would be great too
from ofetch.
It could be implemented using https://npm.im/async-retry or adapted directly from the source code of https://github.com/tim-kos/node-retry to avoid adding a dependency.
EDIT: or perhaps just:
- function onError(context: FetchContext): Promise<FetchResponse<any>> {
+ async function onError(context: FetchContext): Promise<FetchResponse<any>> {
// Is Abort
// If it is an active abort, it will not retry automatically.
// https://developer.mozilla.org/en-US/docs/Web/API/DOMException#error_names
const isAbort =
(context.error && context.error.name === "AbortError") || false;
// Retry
if (context.options.retry !== false && !isAbort) {
let retries;
if (typeof context.options.retry === "number") {
retries = context.options.retry;
} else {
retries = isPayloadMethod(context.options.method) ? 0 : 1;
}
const responseCode = (context.response && context.response.status) || 500;
if (retries > 0 && retryStatusCodes.has(responseCode)) {
+ context.options.timeout ??= 1000;
+ await new Promise(resolve => setTimeout(resolve, context.options.timeout));
+ context.options.timeout *= 2;
return $fetchRaw(context.request, {
...context.options,
retry: retries - 1,
});
}
}
from ofetch.
+1, would be a very useful feature to have. Currently have to hack around to get this to work in nuxt
@rmcmk Can you share the workaround you are using in Nuxt.
from ofetch.
Looking forward to having this implemented !
from ofetch.
Related Issues (20)
- error on Response.blob()
- Multipart image upload not working with fetch but with RapidAPI HOT 4
- Missing types in node export HOT 1
- `body` vs `params` option HOT 1
- Inconsistent headers object returned after a retried request
- TS2305: Module 'ofetch' has no exported member FetchOptions HOT 1
- Errors in Interceptors are silently handled
- How to handle errors body HOT 1
- GraphQL Support HOT 2
- Body in options object in $fetch method from NUXT3 not available in request to server HOT 1
- When using $fetch.raw, clone() cannot be used. HOT 2
- unexpected behavior from `ofetch.raw` and `onResponse` HOT 1
- Add support of TS type annotations on `ofetch.create` HOT 3
- Better Handle Support for Development Certificates
- How can ofetch upload files and obtain real-time progress? HOT 1
- define url params using options HOT 1
- i have a request when i abort this request will be a error "signal is aborted without reason" HOT 1
- http2 support tracker HOT 2
- type issue of onResponse's `response._data` HOT 1
- Check if the body should be parsed to handle x-www-form-urlencoded payloads
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ofetch.