Sobes.tech
Junior

Ako zvládaš situáciu, keď sľub skončí s chybou (odmietnutím)?

sobes.tech AI

Odpoveď od AI

Spracovávam pomocou metód .catch() alebo .finally().

.catch() sa používa na spracovanie zamietnutých promise-ov. Ak sa promise úspešne vyrieši, blok .catch() sa ignoruje.

// Spracovanie chyby pomocou `.catch()`
fetch('/api/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Request failed'); // Simulácia chyby
    }
    return response.json();
  })
  .then(data => {
    console.log('Prijaté údaje:', data);
  })
  .catch(error => {
    console.error('Chyba:', error); // Spracovanie chyby tu
  });

.finally() sa vykoná bez ohľadu na to, či promise bola úspešná (fulfill) alebo zlyhala (reject). Je užitočné na vyčistenie zdrojov alebo skrytie indikátorov načítania.

// Použitie `.finally()` na vykonanie kódu po dokončení promise
fetch('/api/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Request failed');
    }
    return response.json();
  })
  .then(data => {
    console.log('Prijaté údaje:', data);
  })
  .catch(error => {
    console.error('Chyba:', error);
  })
  .finally(() => {
    console.log('Žiadosť bola ukončená.'); // Tento kód sa vždy vykoná
  });

Tiež môžem použiť konštrukciu try...catch v rámci async funkcií na spracovanie chýb asynchrónnych operácií, vrátane promise:

// Spracovanie chyby v async/await pomocou try...catch
async function fetchData() {
  try {
    const response = await fetch('/api/data');
    if (!response.ok) {
      throw new Error('Request failed');
    }
    const data = await response.json();
    console.log('Prijaté údaje:', data);
  } catch (error) {
    console.error('Chyba:', error); // Spracovanie chyby tu
  } finally {
    console.log('Operácia fetch bola ukončená.'); // Vždy sa vykoná
  }
}

fetchData();

Výber metódy závisí od kontextu a požadovanej logiky spracovania. .catch() je hlavná konštrukcia na reakciu na chyby, zatiaľ čo .finally() na akcie, ktoré sa vykonajú bez ohľadu na výsledok. try...catch v async funkciách poskytuje známejší, synchronný štýl spracovania chýb.