Sobes.tech
Junior

Jaké způsoby práce s asynchronním kódem znáš?

sobes.tech AI

Odpověď od AI

Zpětná volání, Promisy, async/await.

Zpětná volání: Funkce předávané jako argumenty jiným funkcím, které jsou volány po dokončení asynchronní operace.

Promisy: Objekt, který nabízí pohodlnější způsob správy asynchronnosti ve srovnání se zpětnými voláními. Mají stavy pending, fulfilled a rejected.

// Příklad Promise
function asyncOperation() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Operace úspěšně dokončena!');
    }, 1000);
  });
}

asyncOperation()
  .then(result => console.log(result))
  .catch(error => console.error(error));

async/await: Syntaktický cukr nad Promisy, který činí asynchronní kód více podobný synchronnímu a zlepšuje jeho čitelnost.

// Příklad async/await
async function performAsyncOperation() {
  try {
    const result = await asyncOperation();
    console.log(result);
  } catch (error) {
    console.error(error);
  }
}

performAsyncOperation();

Porovnání metod:

Metoda Čitelnost / Údržba Zpracování chyb Řízení toku
Zpětná volání Méně čitelná (Callback Hell) Těžké Těžké
Promisy Vylepšené Pohodlné (.catch) Pohodlné (.then, .catch)
async/await Nejlepší Pohodlné (try...catch) Pohodlné (await)

Nejvíce preferovanou metodou v moderních Node.js aplikacích je použití async/await kvůli jeho čitelnosti a pohodlí. Promisy zůstávají důležitým nástrojem, zejména na nižší úrovni implementace. Zpětná volání se používají ve zastaralém kódu nebo pro nízkoúrovňové operace jádra Node.js.