Sobes.tech
Junior

Aké spôsoby práce s asynchrónnym kódom poznáte?

sobes.tech AI

Odpoveď od AI

  • Callback funkcie: Odovzdanie funkcie ako argumentu inej funkcii, ktorá bude volaná po dokončení asynchrónnej operácie. Môžu viesť k "callback hell".
  • Promisy (Promises): Objekt, ktorý predstavuje konečné dokončenie (alebo neúspech) asynchrónnej operácie a jej výslednú hodnotu. Poskytujú štruktúrovanejšie riadenie asynchrónnosti.
    // Príklad použitia promise
    fetch('/api/data')
      .then(response => response.json()) // Spracovanie úspešnej odpovede
      .then(data => console.log(data)) // Spracovanie získaných dát
      .catch(error => console.error('Chyba pri načítaní dát:', error)); // Spracovanie chyby
    
  • Async/await: Syntaxový cukor nad promises, ktorý umožňuje písať asynchrónny kód v viac synchronickom štýle, čo ho robí čitateľnejším a jednoduchším na ladenie.
    // Príklad použitia async/await
    async function fetchData() {
      try {
        const response = await fetch('/api/data'); // Čakanie na vykonanie promise
        if (!response.ok) {
          throw new Error(`HTTP chyba! stav: ${response.status}`);
        }
        const data = await response.json(); // Čakanie na vykonanie promise
        console.log(data);
      } catch (error) {
        console.error('Chyba pri načítaní dát:', error); // Spracovanie chyby
      }
    }
    fetchData();
    
  • Generátory (Generators): Môžu byť použité na prácu s asynchrónnosťou v spojení s knižnicou co alebo ručne, hoci async/await sa stal rozšírenejším prístupom.

Porovnanie hlavných prístupov:

Spôsob Výhody Nevýhody
Callbacks Jednoduché na začiatku "Callback hell", zložitosť spracovania chýb
Promises Zlepšená čitateľnosť, spracovanie chýb Môžu byť objemné pri reťazení operácií
Async/await Vysoká čitateľnosť, podobnosť so synchronickým kódom Vyžaduje podporu async/await prostredia