Sobes.tech
Junior

V čem spočívá rozdíl mezi async/await a Promise?

sobes.tech AI

Odpověď od AI

async/await je syntaktický cukr nad promises. Umožňuje psát asynchronní kód čitelnějším, synchronním stylem, pomocí klíčových slov async pro funkce obsahující await, které čekají na vyřešení promise. Promises jsou objekty, které představují konečné dokončení (nebo selhání) asynchronní operace a její výslednou hodnotu.

Vlastnost async/await Promise
Syntaxe Více podobná synchronnímu kódu. Používá metody .then(), .catch(), .finally().
Čitelnost Obvykle vyšší, zvláště u řetězců. Může vést k "Callback hell" u složitých řetězců.
Zpracování chyb Používá standardní try...catch. Používá .catch() nebo druhý argument v .then().
Paralelismus Vyžaduje explicitní použití Promise.all() nebo Promise.allSettled(). Může být více explicitní, ale méně čitelný bez async/await.
// Příklad s Promise
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Data přijata');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// Příklad s async/await
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Data přijata');
    }, 1000);
  });
}

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

processData();