Sobes.tech
Junior

Mis vahe on async/await ja Promise vahel?

sobes.tech AI

Vastus AI-lt

async/await on sünteetiline suhkur promisete üle. See võimaldab kirjutada asünkroonset koodi loetavamalt, sünkroonse stiilis, kasutades võtmesõnu async funktsioonide jaoks, mille sees kasutatakse await promisete ootamiseks. Promisid on objektid, mis esindavad lõplikku asünkroonse operatsiooni lõpetamist (või viga) ja selle tulemust.

Omadus async/await Promise
Süntaks Sarnasem sünkroonsele koodile. Kasutab .then(), .catch(), .finally() meetodeid.
Loejõud Tihti suurem, eriti ahelates. Võib põhjustada "Callback hell" keerulistes ahelates.
Vigade käsitlemine Kasutab standardset try...catch. Kasutab .catch() või teist argumenti .then().
Paralleelsus Nõuab selget kasutamist Promise.all() või Promise.allSettled(). Võib olla selgem, kuid vähem loetav ilma async/await.
// Näide Promise'iga
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Andmed saadud');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// Näide async/await'iga
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Andmed saadud');
    }, 1000);
  });
}

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

processData();