Sobes.tech
Junior

Aký je rozdiel medzi používaním Promise a syntaxou async/await?

sobes.tech AI

Odpoveď od AI

Promise predstavuje objekt, ktorý odráža konečné dokončenie alebo odmietnutie asynchrónnej operácie. Riadi asynchrónne toky pomocou callbackov .then() a .catch().

async/await je syntaktický cukor nad Promise, ktorý robí asynchrónny kód čitateľnejším a podobným synchronnému. Funkcia označená ako async vždy vracia Promise. Operátor await možno použiť iba vo vnútri async funkcií a pozastaví vykonávanie funkcie, kým Promise nebude vyriešený alebo odmietnuty, a potom vráti jeho výsledok alebo vyvolá výnimku.

Aspekt Promise Async/Await
Čitateľnosť Vyžaduje reťazce .then() a .catch() Vyzerá ako synchronný kód, lineárny tok
Spracovanie chýb Používa .catch() Používa bloky try...catch
Tok vykonávania Riadený callbackmi Pozastavuje/obnovuje funkciu
Vrátená hodnota Promise Promise (pre async funkcie) alebo výsledok Promise (pre await)
Závislosti Samostatný mechanizmus Postavené na Promise

Príklad s Promise:

// Príklad s Promise
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Dáta prijatá (Promise)");
    }, 1000);
  });
}

fetchDataPromise()
  .then(data => console.log(data))
  .catch(error => console.error(error));

Príklad s async/await:

// Príklad s async/await
function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Dáta prijatá (async/await)");
    }, 1000);
  });
}

async function showData() {
  try {
    const data = await fetchDataAsync();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

showData();