Skip to content

JavaScript fetch with timeout using AbortSignal.timeout

JavaScript Dasun Kalupahana 89 views

async function getJson(url, ms = 5000) {
  const res = await fetch(url, { signal: AbortSignal.timeout(ms) });
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  return res.json();
}

try {
  const data = await getJson('https://api.example.com/items');
  console.log(data);
} catch (err) {
  console.error(err.name === 'TimeoutError' ? 'Request timed out' : err.message);
}

Cancels a request automatically if the server takes too long. It also checks response.ok, because fetch does not throw on HTTP errors like 404 or 500.

Learn more on the blog

Get new articles in your inbox

Practical tutorials and deep dives, about once a week. No spam, unsubscribe anytime.

Privacy policy

Add DEV Talk to your Home Screen

  1. 1 Tap the Share button in Safari's toolbar.
  2. 2 Scroll down and tap Add to Home Screen.
  3. 3 Tap Add. Open it from the Home Screen to read like an app and to turn on notifications with the bell.

We use cookies to improve your experience and analyze traffic. By continuing, you agree to our Privacy Policy.