Verzoeken afbreken met AbortController
Annuleer actieve verzoeken netjes.
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 AbortSignalHet 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 requestDe 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 bothAl 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.
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
- GET-verzoeken uitvoeren
- POST en gegevens verzenden
- Fouten en statuscodes afhandelen
- Verzoeken afbreken met AbortController