JavaScript Academy · Les

Verzoeken afbreken met AbortController

Annuleer actieve verzoeken netjes.

Les 4 van 413 stappen

Verzoeken afbreken met AbortController is een gratis JavaScript Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject JavaScript Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus JavaScript Academy bevat in totaal 4 lessen.

Waarom je een aanvraag annuleert

Soms start je een aanvraag die je niet meer nodig hebt: de gebruiker gaat naar een andere pagina, typt een nieuwe zoekopdracht of er verstrijkt een time-out. Met AbortController kun je een fetch die nog bezig is annuleren.

Een controller maken

Maak een AbortController. Deze biedt een signal die je aan fetch doorgeeft en een abort()-methode om de aanvraag te annuleren.

const controller = new AbortController();
console.log(controller.signal); // an AbortSignal

Het signaal doorgeven

Geef het signaal van de controller via het optiesobject door aan fetch. De aanvraag kan nu worden geannuleerd.

fetch(url, { signal: controller.signal });

abort aanroepen

Roep controller.abort() aan om te annuleren. De Promise van de wachtende fetch wordt afgewezen met een AbortError.

const controller = new AbortController();
fetch(url, { signal: controller.signal });
controller.abort(); // cancels the request

De AbortError opvangen

Maak onderscheid tussen een bewuste annulering en een echte fout door in je catch err.name === "AbortError" te controleren.

try {
  await fetch(url, { signal: controller.signal });
} catch (err) {
  if (err.name === "AbortError") console.log("Cancelled");
  else throw err;
}

Patroon voor time-outs

Combineer dit met setTimeout om trage aanvragen automatisch te annuleren. Wis de timer als de aanvraag eerder klaar is.

const c = new AbortController();
const t = setTimeout(() => c.abort(), 5000);
await fetch(url, { signal: c.signal });
clearTimeout(t);

Ingebouwde helper voor time-outs

Moderne omgevingen bieden AbortSignal.timeout(ms), dat een signaal teruggeeft dat automatisch annuleert. Dit is eenvoudiger dan zelf setTimeout aan te sluiten.

fetch(url, { signal: AbortSignal.timeout(5000) });

Vorige zoekopdracht annuleren

Annuleer bij een zoekopdracht die tijdens het typen wordt uitgevoerd eerst de vorige aanvraag voordat je een nieuwe start. Zo voorkom je dat verouderde antwoorden nieuwe resultaten overschrijven.

let current = null;
function search(q) {
  if (current) current.abort();
  current = new AbortController();
  return fetch("/search?q=" + q, { signal: current.signal });
}

Eén signaal, meerdere fetch-aanvragen

Met één signaal kun je meerdere aanvragen tegelijk annuleren. Geef hetzelfde signaal door aan verschillende fetch-aanroepen; met één abort() annuleer je ze allemaal.

const c = new AbortController();
fetch(a, { signal: c.signal });
fetch(b, { signal: c.signal });
c.abort(); // cancels both

Al geannuleerde signalen

Als een signaal al geannuleerd is wanneer je het aan fetch doorgeeft, wordt de aanvraag onmiddellijk afgewezen. Controleer signal.aborted als je de status ervan moet weten.

if (controller.signal.aborted) console.log("already cancelled");

Opruimen bij het ontkoppelen

Annuleer in gebruikersinterfaces die uit componenten bestaan openstaande aanvragen wanneer de component wordt vernietigd. Zo voorkom je dat je de status instelt van iets dat niet meer bestaat.

const controller = new AbortController();
// on teardown:
controller.abort();

Korte controle

Fetch-aanvragen annuleren.

Samenvatting

Maak een AbortController, geef het signal ervan door aan fetch en roep abort() aan om te annuleren. De Promise wordt afgewezen met een AbortError, die je aan de naam kunt herkennen. Gebruik dit voor time-outs (AbortSignal.timeout), het annuleren van de vorige zoekopdracht, het annuleren van meerdere aanvragen en opruimen bij het afbreken.

Gratis beginnen

Leer JavaScript met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
59
Lessen
200

Veelgestelde vragen

Is de les “Verzoeken afbreken met AbortController” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad JavaScript Academy, waaronder “Verzoeken afbreken met AbortController”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus JavaScript Academy bevat in totaal 4 lessen.

Wat leer ik in “Verzoeken afbreken met AbortController”?

Annuleer actieve verzoeken netjes. Je oefent met JavaScript Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met JavaScript Academy te beginnen?

Ervaring vooraf is niet nodig. JavaScript Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Verzoeken afbreken met AbortController”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over JavaScript Academy?

Ja. Elke les over JavaScript Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. GET-verzoeken uitvoeren
  2. POST en gegevens verzenden
  3. Fouten en statuscodes afhandelen
  4. Verzoeken afbreken met AbortController
← Terug naar JavaScript Academy