Språkbanner for FetchClient med retry og timeout
AJAX Fetch & API-klienter
AJAX
Scripts / AJAX Fetch & API-klienter
Copy-first script

FetchClient med retry og timeout

Liten JavaScript-klient for robuste AJAX-kall.

AJAX 15 min Nivå 8/10 Copy Versjon 1.0
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.
Klar til bruk

Kodevindu

Koden er optimalisert for rask kopiering og videre tilpasning i eget prosjekt.

AJAX 25 linjer 574 tegn Copy-modus
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);
    }
  }
}
W
Skrevet av Leon Webmaster, systemutvikler, webutvikler og designer. @ WEBoracle Publisert: Tirsdag, 02.12.2025 kl 12:00