AbortController

by Artem Borovikov

JavaScript

const fetchWithTimeout = async (url, timeout) => {
  const controller = new AbortController()
  const { signal } = controller
  const timeoutId = setTimeout(() => controller.abort(), timeout)

  try {
    const response = await fetch(url, {
      signal,
    })

    clearTimeout(timeoutId);
    
    const data = await response.json();
    
    console.log('fetchWithTimeout', data);

    return data;
  } catch (error) {
    throw error
  }
}

const data = fetchWithTimeout(
  "https://jsonplaceholder.typicode.com/todos/1",
  1000,
).then((data) => data);

console.log('final data', data);