Sobes.tech
Junior

Mi a különbség a Promise használata és az async/await szintaxis között?

sobes.tech MI

Válasz az MI-től

A Promise egy objektum, amely egy aszinkron művelet végleges befejezését vagy elutasítását tükrözi. Az aszinkron folyamatokat a .then() és .catch() callbackok segítségével kezeli.

Az async/await a Promise feletti szintaktikus cukor, amely az aszinkron kódot olvashatóbbá és szinkronhoz hasonlóvá teszi. Az async-ként megjelölt függvény mindig Promise-t ad vissza. Az await operátor csak async függvényeken belül használható, és megállítja a függvény végrehajtását, amíg a Promise meg nem oldódik vagy el nem utasítják, majd visszaadja az eredményt vagy kivételt dob.

Szempont Promise Async/Await
Olvashatóság .then() és .catch() láncokat igényel Hasonló a szinkron kódhoz, lineáris folyamat
Hibakezelés .catch()-t használ try...catch blokkokat használ
Végrehajtási folyamat Callback-okon keresztül irányított Megállítja/folytatja a függvényt
Visszatérő érték Promise Promise (az async függvényekhez) vagy a Promise eredménye (await esetén)
Függőségek Önálló mechanizmus Promise alapú

Példa Promise-szal:

// Promise példa
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Adatok megérkeztek (Promise)");
    }, 1000);
  });
}

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

Példa async/await-tel:

// async/await példa
function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Adatok megérkeztek (async/await)");
    }, 1000);
  });
}

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

showData();