Sobes.tech
Junior

V čom spočíva rozdiel medzi async/await a Promise?

sobes.tech AI

Odpoveď od AI

async/await je syntaktický cukor nad promises. Umožňuje písanie asynchrónneho kódu čitateľnejším, synchronizovaným štýlom, pomocou kľúčových slov async pre funkcie obsahujúce await, ktoré čakajú na vyriešenie promise. Promises sú objekty, ktoré predstavujú konečné dokončenie (alebo zlyhanie) asynchrónnej operácie a jej výslednú hodnotu.

Vlastnosť async/await Promise
Syntax Viac podobná synchronnému kódu. Používa metódy .then(), .catch(), .finally().
Čitateľnosť Vo všeobecnosti vyššia, najmä pri reťazcoch. Môže viesť k "Callback hell" pri zložitých reťazcoch.
Spracovanie chýb Používa štandardný try...catch. Používa .catch() alebo druhý argument v .then().
Paralelizmus Vyžaduje explicitné použitie Promise.all() alebo Promise.allSettled(). Môže byť jasnejšie, ale menej čitateľné bez async/await.
// Príklad s Promise
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Dáta prijaté');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// Príklad s async/await
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Dáta prijaté');
    }, 1000);
  });
}

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

processData();