Promises w JavaScript

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

Czym są Promises w JavaScript?

Promise (obietnica) to mechanizm języka JavaScript służący do obsługi operacji asynchronicznych, czyli takich, których wynik nie jest dostępny natychmiast. Przykładami są: pobieranie danych z API, odczyt pliku, zapytanie do bazy danych lub operacja wykonywana z opóźnieniem.

Promise reprezentuje wartość, która może być dostępna w przyszłości albo zakończyć się błędem.

Stany Promise

Obiekt Promise może znajdować się w jednym z trzech stanów:

  • pending - oczekuje na zakończenie operacji,
  • fulfilled - operacja zakończyła się sukcesem,
  • rejected - operacja zakończyła się błędem.

Podstawowe metody

Do obsługi wyniku Promise używa się najczęściej:

  • .then() - wykonuje kod po sukcesie,
  • .catch() - obsługuje błąd,
  • .finally() - wykonuje kod niezależnie od wyniku.

Przykład

const obietnica = new Promise((resolve, reject) => {
  const sukces = true;

  if (sukces) {
    resolve("Operacja zakończona powodzeniem");
  } else {
    reject("Wystąpił błąd");
  }
});

obietnica
  .then(wynik => console.log(wynik))
  .catch blad => console.log(blad));

Po co stosuje się Promise?

Promises porządkują obsługę kodu asynchronicznego i pomagają uniknąć tzw. callback hell, czyli zagnieżdżania wielu funkcji zwrotnych. Są podstawą nowocześniejszej składni async/await, która również służy do pracy z operacjami asynchronicznymi.

W pytaniach egzaminacyjnych najważniejsze jest zapamiętanie, że celem Promise jest zarządzanie kodem asynchronicznym, a nie zastępowanie dziedziczenia ani poprawianie zwykłego kodu synchronicznego.