Код IT
← Каталог

curl / fetch — API-запросы — 4. fetch — таймаут (не ждать вечно)

Фрагмент из «curl / fetch — API-запросы»: 4. fetch — таймаут (не ждать вечно).

JavaScript main.js
async function fetchJson(url, { timeoutMs = 5000 } = {}) {
  const controller = new AbortController();
  const timer = setTimeout(() => controller.abort timeoutMs);

  try {
    const res = await fetch(url, { signal: controller.signal });
    if (!res.ok) {
      throw new Error(`HTTP ${res.status} ${res.statusText}`);
    }
    return await res.json();
  } finally {
    clearTimeout(timer);
  }
}

const post = await fetchJson('https://jsonplaceholder.typicode.com/posts/1');
console.log(post.title);
async function fetchJson(url, { timeoutMs = 5000 } = {}) {
  const controller = new AbortController();
  const timer = setTimeout(() => controller.abort timeoutMs);

  try {
    const res = await fetch(url, { signal: controller.signal });
    if (!res.ok) {
      throw new Error(`HTTP ${res.status} ${res.statusText}`);
    }
    return await res.json();
  } finally {
    clearTimeout(timer);
  }
}

const post = await fetchJson('https://jsonplaceholder.typicode.com/posts/1');
console.log(post.title);