Sobes.tech
Middle

Prečo bola zavedená konštrukcia async/await a ako zlepšuje prácu s asynchrónnym kódom?

sobes.tech AI

Odpoveď od AI

Async/await bol predstavený na zjednodušenie písania asynchrónneho kódu, čím ho sprístupňuje ako čitateľnejší a ľahšie udržiavateľný v porovnaní s tradičnými callbackmi alebo promises.

Ako to zlepšuje:

  1. Čitateľnosť: Kód s async/await vyzerá ako synchronný, riadok po riadku, čo výrazne uľahčuje jeho pochopenie.
  2. Spracovanie chýb: Umožňuje používať štandardné konštrukcie ako try/catch na spracovanie chýb v asynchrónnom kóde, na rozdiel od .catch() v promises.
  3. Ladenie: Breakpoints fungujú rovnako ako v synchronickom kóde, čo uľahčuje ladenie.
  4. Menej "callback hell": Odstraňuje problém s vnorenými callbackmi, ktoré vedú k nečitateľnému kódu.

Príklad:

Kód s promises:

// Príklad s promises
fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Chyba pri načítaní dát:', error);
  });

Tento istý kód s async/await:

// Príklad s async/await
async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Chyba pri načítaní dát:', error);
  }
}

fetchData();

Konstrukcia async/await je založená na promises a je syntaktickým cukrom pre ich prácu. Funkcia označená ako async vždy vracia promise. Operátor await možno použiť iba vo vnútri async funkcií a "čaká" na vyriešenie promise, vracia jej vyriešenú hodnotu alebo vyvoláva výnimku v prípade chyby.