Sobes.tech
Junior

Ի՞նչ է տարբերությունը async/await և Promise-ի միջև։

sobes.tech AI

Պատասխան AI-ից

async/await-ը սինտաքսիկ շաքար է պրոմիսների վրա: Այն թույլ է տալիս գրել ասինխրոն կոդ ավելի ընթեռնելի և սինխրոնային ոճով՝ օգտագործելով async բանալի բառը ֆունկցիաների համար, որոնք պարունակում են await՝ սպասելու պրոմիսի լուծմանը: Պրոմիսները օբյեկտներ են, որոնք ներկայացնում են ասինխրոն գործողության վերջնական ավարտը (կամ ձախողումը) և դրա արդյունք արժեքը:

Գծանշում async/await Promise
Սինտաքս Ավելի շատ նման է սինխրոնային կոդին: Օգտագործում է .then(), .catch(), .finally() մեթոդները:
Կարդալություն Ընդհանուր առմամբ ավելի բարձր, հատկապես շղթաներում: Կարող է հանգեցնել "Callback hell"-ի բարդ շղթաներում:
Սխալների կառավարում Օգտագործում է ստանդարտ try...catch: Օգտագործում է .catch() կամ երկրորդ արգումենտը .then()-ում:
Պարալելիզմ Պահանջում է բացահայտ օգտագործել Promise.all() կամ Promise.allSettled(): Կարող է լինել ավելի պարզ, բայց ավելի քիչ ընթերցվող առանց async/await:
// Օրինակ Promise-ով
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Տվյալները ստացվեցին');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// Օրինակ async/await-ով
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Տվյալները ստացվեցին');
    }, 1000);
  });
}

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

processData();