FetchClient med retry og timeout
Liten JavaScript-klient for robuste AJAX-kall.
AJAX
Copy
Forutsetninger
Moderne nettleser og et backend-endpoint som svarer med JSON.
FetchClient med retry og timeout
Liten JavaScript-klient for robuste AJAX-kall.
Når bør du bruke scriptet?
Dette scriptet passer når du vil løse én konkret oppgave raskt, men fortsatt holde kvaliteten høy nok til at koden tåler å bli flyttet inn i produksjonsflyt senere.
Hvorfor er dette nyttig i WEBoracle?
WEBoracle kombinerer innhold, adminverktøy og backendflyt. Små, fokuserte scripts gjør det mulig å bygge funksjoner stegvis uten å blande alt inn i samme fil.
Kode
class FetchClient {
constructor(baseUrl = '') {
this.baseUrl = baseUrl;
}
async request(path, options = {}, timeout = 8000) {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), timeout);
try {
const response = await fetch(this.baseUrl + path, {
...options,
headers: {
'X-Requested-With': 'XMLHttpRequest',
...(options.headers || {})
},
signal: controller.signal
});
return response;
} finally {
clearTimeout(timer);
}
}
}
Tilpasning
- Bytt ut hardkodede navn og tabeller før produksjon.
- Legg til logging hvis scriptet kjører i adminnære eller sikkerhetskritiske løp.
- Pakk logikken inn i en tjeneste eller modul når du ser at den blir gjenbrukt.
Kode
class FetchClient {
constructor(baseUrl = '') {
this.baseUrl = baseUrl;
}
async request(path, options = {}, timeout = 8000) {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), timeout);
try {
const response = await fetch(this.baseUrl + path, {
...options,
headers: {
'X-Requested-With': 'XMLHttpRequest',
...(options.headers || {})
},
signal: controller.signal
});
return response;
} finally {
clearTimeout(timer);
}
}
}