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.