Sobes.tech
Junior

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

sobes.tech AI

Atbilde no AI

async/await ir sintaktiska cukura pārpratums virs solījumiem. Tas ļauj rakstīt asinhrono kodu skaidrākā, sinhroniskā stilā, izmantojot atslēgvārdus async funkcijām, kuru iekšpusē tiek izmantots await solījumu gaidīšanai. Solījumi ir objekti, kas pārstāv galīgo asinhronas operācijas pabeigšanu (vai kļūmi) un tās rezultātu.

Īpašība async/await Promise
Sintakse Līdzīgāka sinhroniskajam kodam. Izmanto .then(), .catch(), .finally() metodes.
Lasāmība Bieži augstāka, īpaši ķēdēs. Var izraisīt "Callback hell" sarežģītās ķēdēs.
Kļūdu apstrāde Izmanto standarta try...catch. Izmanto .catch() vai otro .then() argumentu.
Paralēlisms Prasa skaidru Promise.all() vai Promise.allSettled() izmantošanu. Var būt skaidrāks, bet mazāk lasāms bez async/await.
// Piemērs ar Promise
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Dati saņemti');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// Piemērs ar async/await
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Dati saņemti');
    }, 1000);
  });
}

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

processData();