Passer au contenu principal

Comment annuler proprement un fetch avec AbortController

AbortController est un objet qui permet d’annuler proprement une opération asynchrone, comme une requête fetch. Il est particulièrement utile pour :

  • Éviter les effets de bord inutiles (ex. : composant démonté mais requête toujours active).
  • Libérer des ressources réseau ou mémoire car il permet d’interrompre le traitement associé à la réponse tel que décodage, parsing JSON, …
  • Améliorer la réactivité de l’interface utilisateur (ex. : recherche en direct annulée à chaque frappe).

 

Exemple : annuler une requête fetch
const abortController = new AbortController();
const signal = abortController.signal;

fetch('/todo', { signal })
  .then(response => response.json())
  .then(data => console.log(data));

const abortBtn = document.querySelector(".abort");

abortBtn.addEventListener("click", () => {
  abortController.abort();
  console.log("Fetching aborted");
});