Co to jest promesa?

Promesa – definicja i znaczenie

Promesa, znana również jako “obietnica” lub “zobowiązanie”, jest terminem pochodzącym z języka hiszpańskiego, który zyskał popularność w kontekście programowania i tworzenia oprogramowania asynchronicznego.

Jednak pojęcie promesy nie ogranicza się tylko do programowania. Jest to również pojęcie znaczące w życiu codziennym oraz w relacjach międzyludzkich.

W kontekście programowania

W programowaniu promesa jest obiektem reprezentującym wartość, która może być dostępna natychmiast, być wynikiem obliczeń lub być dostępna później. Najczęściej spotykanymi kontekstami użycia promes są operacje, które mogą potrwać pewien czas, takie jak pobieranie danych z serwera czy operacje wejścia-wyjścia (I/O). Zamiast blokować wykonywanie programu, korzystając z promes, możliwe jest asynchroniczne wykonywanie wielu operacji jednocześnie.

Struktura promesy

Promesa składa się z trzech stanów:

Oczekujący (pending): Stan początkowy, w którym promesa nie jest ani spełniona, ani odrzucona.
Spełniona (fulfilled): Stan, w którym operacja zakończyła się sukcesem, a wynik jest dostępny.
Odrzucona (rejected): Stan, w którym operacja zakończyła się niepowodzeniem, a powód odrzucenia jest dostępny.
Promesa może przejść tylko z jednego stanu do drugiego: z oczekującego do spełnionego lub odrzuconego, i po osiągnięciu jednego z tych stanów, pozostaje w nim już na zawsze, jest to tzw. “stan niezmienialny”.

Zalety użycia promes w programowaniu

Korzystanie z promes w programowaniu ma wiele zalet, w tym:

Asynchroniczność: Promesy pozwalają na wykonywanie wielu operacji równolegle, co poprawia wydajność programu.
Łatwość obsługi błędów: Dzięki mechanizmowi obsługi odrzucenia, łatwiej jest zarządzać błędami i wyjątkami w kodzie.
Czytelność kodu: Użycie promes może znacznie poprawić czytelność kodu, zwłaszcza w przypadku wielu zagnieżdżonych operacji asynchronicznych.

Przykład użycia promesy w javascript

javascript
// Tworzenie promesy
const oblicz = new Promise((resolve, reject) => {
// Symulowanie operacji asynchronicznej (np. pobieranie danych z serwera)
setTimeout(() => {
const wynik = Math.random();
if (wynik > 0.5) {
resolve(wynik); // Promesa spełniona
} else {
reject(‘Błąd obliczeń’); // Promesa odrzucona
}
}, 2000); // Symulowanie czasu trwania operacji (2 sekundy)
});
// Obsługa promesy
oblicz.then((wynik) => {
console.log(‘Wynik obliczeń:’, wynik);
}).catch((error) => {
console.error(‘Błąd:’, error);
});
W tym przykładzie tworzona jest promesa, która symuluje obliczenia i zwraca losową wartość. Jeśli wartość jest większa niż 0.5, promesa jest spełniona, w przeciwnym razie jest odrzucona. Następnie używana jest metoda then() do obsługi przypadku, gdy promesa zostanie spełniona, oraz metoda catch() do obsługi błędów, gdy promesa zostanie odrzucona.
Promesa jest pojęciem szeroko stosowanym w programowaniu, szczególnie w kontekście operacji asynchronicznych. Dzięki promesom możliwe jest efektywne zarządzanie asynchronicznymi operacjami oraz obsługa błędów w czytelny sposób. Warto poznać i zrozumieć mechanizm promes, gdyż jest to istotny element współczesnych technologii informatycznych.

Zobacz również   Jak zrobić screena w systemie windows 10