Sobes.tech
Junior

რა განსხვავებაა Promise-ის გამოყენებასა და async/await სინტაქსის გამოყენებას შორის?

sobes.tech AI

პასუხი AI-სგან

Promise объекті — бұл асинхронды операцияның аяқталуын немесе бас тартуын көрсететін объект. Ол .then() және .catch() колбектерін пайдаланып асинхронды ағындарды басқарады.

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();