Basic Usage
Basic Usage
Section titled “Basic Usage”Introduction
Section titled “Introduction”AbortController starts a request and cancels it when needed using an AbortSignal.
Simple Example
Section titled “Simple Example”const controller = new AbortController();const signal = controller.signal;
fetch('/api/large-data', { signal }) .then(response => response.json()) .then(data => console.log(data)) .catch(err => { if (err.name === 'AbortError') { console.log('Request was cancelled'); } else { console.error('Request failed:', err); } });
// Cancel the requestcontroller.abort();Visual Explanation
Section titled “Visual Explanation”sequenceDiagram participant App as Application participant Fetch as Fetch API participant Server as Server
App->>Fetch: fetch(url, { signal }) Note over App,Fetch: User navigates away App->>Fetch: controller.abort() Fetch-->>App: AbortError Server-->>Fetch: (Response arrives too late)With Async/Await
Section titled “With Async/Await”async function fetchWithCancel(url, signal) { try { const response = await fetch(url, { signal }); return await response.json(); } catch (error) { if (error.name === 'AbortError') { console.log('Request was cancelled'); return null; } throw error; }}Summary
Section titled “Summary”- Create with
new AbortController() - Pass
signalto fetch options - Call
controller.abort()to cancel - Catch
AbortErrorto handle cancellation