Sobes.tech
Junior

Jaký je rozdíl mezi použitím Promise a syntaxí async/await?

sobes.tech AI

Odpověď od AI

Promise představuje objekt, který odráží konečné dokončení nebo odmítnutí asynchronní operace. Řídí asynchronní toky pomocí callbacků .then() a .catch().

async/await je syntaktický cukr nad Promise, který činí asynchronní kód čitelnějším a podobným synchronnímu. Funkce označená jako async vždy vrací Promise. Operátor await lze použít pouze uvnitř async funkcí a pozastaví provádění funkce, dokud Promise nebude vyřešen nebo odmítnut, a poté vrátí jeho výsledek nebo vyvolá výjimku.

Aspekt Promise Async/Await
Čitelnost Vyžaduje řetězce .then() a .catch() Vypadá jako synchronní kód, lineární tok
Zpracování chyb Používá .catch() Používá bloky try...catch
Tok provádění Řídí se callbacky Pozastaví/obnoví funkci
Vrácená hodnota Promise Promise (pro async funkce) nebo výsledek Promise (pro await)
Závislosti Samostatný mechanismus Postaveno na Promise

Příklad s Promise:

// Příklad s Promise
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Data přijata (Promise)");
    }, 1000);
  });
}

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

Příklad s async/await:

// Příklad s async/await
function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Data přijata (async/await)");
    }, 1000);
  });
}

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

showData();