Kursy i Poradniki IT - Adrian Kowalski
Kurs JavaScript dla Początkujących
O lekcji

Promise to obiekt reprezentujący zakończenie operacji asynchronicznej. Zamiast korzystać z „callbacków”, Promises pozwalają na bardziej eleganckie zarządzanie kodem asynchronicznym i lepszą obsługę błędów.

Przykład – Promise

Załóżmy, że mamy funkcję, która symuluje opóźnioną odpowiedź z serwera:

function pobierzDane() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const success = true; // Można zmienić na false, aby sprawdzić błąd
      if (success) {
        resolve("Dane zostały pobrane");
      } else {
        reject("Błąd podczas pobierania danych");
      }
    }, 2000);
  });
}

// Użycie Promise
pobierzDane()
  .then((wynik) => {
    console.log(wynik); // "Dane zostały pobrane"
  })
  .catch((błąd) => {
    console.log(błąd); // "Błąd podczas pobierania danych"
  });

W powyższym przykładzie, Promise jest używane do zarządzania asynchronicznym procesem pobierania danych. resolve() jest wywoływane, gdy operacja zakończy się sukcesem, a reject() – gdy wystąpi błąd.

Chaining i async/await

async function main() {
  try {
    const dane = await pobierzDane();
    console.log(dane);
  } catch (error) {
    console.log(error);
  }
}

main();

async/await to nowoczesne podejście do pracy z obietnicami, które pozwala na pisanie kodu asynchronicznego w sposób bardziej synchronny i czytelny.