Sobes.tech
Junior

Koja je razlika između async/await i Promise?

sobes.tech АИ

Одговор од АИ

async/await је синтаксички шећер над promises. Он омогућава писање асинхроног кода у читљивијем, синхронизованом стилу, коришћењем кључних речи async за функције које садрже await за чекање на решење promise-а. Promises су објекти који представљају коначну завршетак (или неуспех) асинхроне операције и њену резултујућу вредност.

Карактеристика 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();