Sobes.tech
Junior

Koja je razlika između korišćenja Promise i sintakse async/await?

sobes.tech АИ

Одговор од АИ

Promise predstavlja objekat koji odražava završetak ili odbijanje asinhrone operacije. On upravlja asinhronim tokovima pomoću callbackova .then() i .catch().

async/await je sintaktički šećer nad Promise, koji čini asinhroni kod čitljivijim i sličnijim sinhronom. Funkcija označena kao async uvek vraća Promise. Operator await može se koristiti samo unutar async funkcija i zaustavlja izvršenje funkcije dok se Promise ne reši ili odbije, vraćajući njegov rezultat ili izazivajući izuzetak.

Aspekt Promise Async/Await
Čitljivost Zahteva lance .then() i .catch() Slično sinhronom kodu, linearn tok
Obrada grešaka Koristi .catch() Koristi blokove try...catch
Tok izvršenja Upravljan je callbackovima Zaustavlja/nastavlja funkciju
Vraćena vrednost Promise Promise (za async funkcije) ili rezultat Promise (za await)
Zavisnosti Samostalni mehanizam Bazirano na Promise

Primer sa Promise:

// Primer sa Promise
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Podaci primljeni (Promise)");
    }, 1000);
  });
}

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

Primer sa async/await:

// Primer sa async/await
function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Podaci primljeni (async/await)");
    }, 1000);
  });
}

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

showData();