Sobes.tech
Junior

Ի՞նչ տարբերություն կա Promise-ի օգտագործման և async/await սինտաքսիքի միջև։

sobes.tech AI

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

Promise ներկայացնում է օբյեկտ, որը արտացոլում է վերջնական ավարտը կամ մերժումը ասինխրոնային օպերացիայի։ Այն կառավարում է ասինխրոնային հոսքերը then() և catch() callback-ների միջոցով։

async/await - դա Promise-ի վրա հիմնված սինտաքսիկ շաքար է, որը դարձնում է ասինխրոնային կոդը ավելի ընթեռնելի և սինխրոնայինի նման։ Ֆունկցիան, որը նշված է որպես async, միշտ վերադարձնում է Promise։ Օպերատոր await-ը կարելի է օգտագործել միայն async ֆունկցիայի ներսում և այն դադարեցնում է ֆունկցիայի կատարմանը մինչև Promise-ը կատարվի կամ մերժվի, ապա վերադարձնում է նրա արդյունքը կամ գեներացնում է արտահայտություն։

Աспեկտ Promise Async/Await
Ընթերցելիություն Պահանջում .then() և .catch() շղթաներ Դեռևս սինխրոնային կոդի նման, գծային հոսք
Հետախուզման սխալներ Օգտագործում է .catch() Օգտագործում է try...catch բլոկներ
Հոսքի կատարման Կառավարում է callback-ներով Դադարեցնում/վերականգնում է ֆունկցիան
Վերադարձվող արժեք Promise Promise (async ֆունկցիայի համար) կամ Promise-ի արդյունք (await-ի համար)
Զависимость Անկախ մեխանիզմ Ներդրված է Promise-ի վրա

Օրինակ Promise-ով:

// Օրինակ Promise-ով
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Տվյալները ստացվել են (Promise)");
    }, 1000);
  });
}

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

Օրինակ async/await-ով:

// Օրինակ `async/await`-ով
function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Տվյալները ստացվել են (async/await)");
    }, 1000);
  });
}

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

showData();