Sobes.tech
Junior

Kāda ir atšķirība starp Promise izmantošanu un async/await sintaksi?

sobes.tech AI

Atbilde no AI

Promise ir objekts, kas atspoguļo galīgo asinhronas operācijas pabeigšanu vai noraidīšanu. Tas pārvalda asinhronos plūsmas, izmantojot .then() un .catch() atgriezeniskās saites funkcijas.

async/await ir Promise sintaktisks cukurs, kas padara asinhrono kodu lasāmāku un līdzīgu sinhronajam. Funkcija, kas marķēta kā async, vienmēr atgriež Promise. Operators await var tikt izmantots tikai async funkcijas iekšienē un tas pārtrauc funkcijas izpildi līdz Promise izpildei vai noraidīšanai, pēc tam tas atgriež tā rezultātu vai izsauc izņēmumu.

Aspekts Promise Async/Await
Lasāmība Prasa ķēdes .then() un .catch() Līdzīgs sinhronajam kodam, līniju plūsma
Kļūdu apstrāde Izmanto .catch() Izmanto try...catch blokus
Plūsmas izpilde Pārvalda atpakaļsaišu funkcijas Pārtrauc/atsāk funkciju
Atgrieztā vērtība Promise Promise (async funkcijai) vai Promise rezultāts (await)
Atkarība Pašpietiekams mehānisms Būvēts uz Promise

Piemērs ar Promise:

// Piemērs ar Promise
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Dati saņemti (Promise)");
    }, 1000);
  });
}

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

Piemērs ar async/await:

// Piemērs ar async/await
function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Dati saņemti (async/await)");
    }, 1000);
  });
}

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

showData();