Sobes.tech
Junior

Na czym polega różnica między async/await a Promise?

sobes.tech AI

Odpowiedź od AI

async/await to składniowy cukier nad obietnicami. Pozwala pisać kod asynchroniczny w bardziej czytelny, synchroniczny styl, używając słów kluczowych async dla funkcji zawierających await, aby oczekiwać na rozwiązanie obietnicy. Obietnice to obiekty reprezentujące końcowe zakończenie (lub niepowodzenie) operacji asynchronicznej i jej wynikową wartość.

Cecha async/await Promise
Składnia Bardziej przypomina kod synchroniczny. Używa metod .then(), .catch(), .finally().
Czytelność Zazwyczaj wyższa, szczególnie przy łańcuchach. Może prowadzić do "Callback hell" przy złożonych łańcuchach.
Obsługa błędów Używa standardowego try...catch. Używa .catch() lub drugiego argumentu w .then().
Paralelizm Wymaga jawnego użycia Promise.all() lub Promise.allSettled(). Może być bardziej jawny, ale mniej czytelny bez async/await.
// Przykład z Promise
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Dane otrzymane');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// Przykład z async/await
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Dane otrzymane');
    }, 1000);
  });
}

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

processData();