26. Czym jest Promise w JavaScript i jak działa?

Czym jest Promise w JavaScript i jak działa?

Promise w JavaScript to obiekt reprezentujący ostateczne zakończenie lub niepowodzenie operacji asynchronicznej. Pozwala na dołączanie wywołań zwrotnych do obsługi wyniku lub błędu zadania asynchronicznego, co ułatwia zarządzanie przepływem wykonywania kodu.

Jak działają Promises

Promise może być w jednym z trzech stanów:

  1. Pending: Stan początkowy, ani spełniony, ani odrzucony.
  2. Fulfilled: Operacja zakończyła się sukcesem.
  3. Rejected: Operacja zakończyła się niepowodzeniem.

Kiedy Promise jest tworzony, jest w stanie oczekiwania (pending). Może przejść do stanu spełnionego poprzez wywołanie funkcji resolve, lub do stanu odrzuconego przez wywołanie funkcji reject. Gdy Promise jest osadzony (spełniony lub odrzucony), jego stan nie może już się zmienić.

Tworzenie Promise

Oto prosty przykład tworzenia Promise:

const myPromise = new Promise((resolve, reject) => { const success = true; // Symulacja scenariusza sukcesu if (success) { resolve('Operacja zakończona sukcesem!'); } else { reject('Operacja zakończona niepowodzeniem.'); } });

Obsługa Promise

Obsługujesz wynik Promise za pomocą .then() dla spełnienia i .catch() dla odrzucenia:

myPromise .then((message) => { console.log('Sukces:', message); }) .catch((error) => { console.error('Błąd:', error); });

W powyższym przykładzie, jeśli wywołany zostanie resolve, blok then zostanie wykonany, wypisując "Sukces: Operacja zakończona sukcesem!". Jeśli wywołany zostanie reject, blok catch zostanie wykonany, wypisując "Błąd: Operacja zakończona niepowodzeniem.".

Łańcuchy Promises

Promises mogą być łączone w łańcuchy, aby sekwencyjnie wykonywać wiele operacji asynchronicznych. Każdy .then() zwraca nowy Promise, umożliwiając dalsze łączenie w łańcuchy:

myPromise .then((message) => { console.log('Pierwszy:', message); return 'Następna operacja'; }) .then((nextMessage) => { console.log('Drugi:', nextMessage); }) .catch((error) => { console.error('Błąd:', error); });

W tym łańcuchu wynik jednego then jest przekazywany do następnego, co pozwala na sekwencyjne przetwarzanie operacji asynchronicznych.

Podsumowanie

Promises w JavaScript zapewniają potężny sposób obsługi operacji asynchronicznych, oferując czystsze i bardziej zorganizowane podejście niż tradycyjne rozwiązania oparte na callbackach.

Nie możesz znaleźć wspólnego terminu na spotkanie z przyjaciółmi? Sprawdź nasze narzędzie commondate.xyz
devFlipCards 2025

Akceptujesz cookies?

Cookies to niewielkie fragmenty danych zapisywane lokalnie na twoim urządzeniu. Pomagają w funkcjonowaniu naszej strony - zapisują Twoje ustawienia strony takie jak motyw czy język. Poprawiają funkcjonowanie reklam i pozwalają nam na przeprowadzanie analityki odwiedzin strony. Korzystając ze strony zgadasz się na ich wykorzystanie.

Nie możesz znaleźć wspólnego terminu na spotkanie z przyjaciółmi? Sprawdź nasze narzędzie
commondate.xyz