𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗣𝗿𝗼𝗺𝗶𝘀𝗲𝘀

Obietnica (Promise) reprezentuje wynik zadania asynchronicznego.

Obietnic używa się do wywołań API, zapytań do bazy danych oraz odczytywania plików.

Obietnica ma trzy stany:

  • Pending (Oczekiwanie): Zadanie jest w toku.
  • Fulfilled (Zrealizowana): Zadanie zakończyło się sukcesem.
  • Rejected (Odrzucona): Zadanie zakończyło się błędem.

Struktura wygląda następująco:

const promise = new Promise((resolve, reject) => { // The executor runs immediately });

Wyniki obsługuje się za pomocą tych metod:

  • .then(): Wykonywane, gdy obietnica zostanie zrealizowana.
  • .catch(): Wykonywane, gdy obietnica zostanie odrzucona.
  • .finally(): Wykonywane, gdy zadanie się zakończy, niezależnie od wyniku.

Ważne zasady, o których należy pamiętać:

  • Liczy się pierwszy wynik. Jeśli wywołasz resolve() a następnie reject(), wygra resolve().
  • Funkcja wykonawcza (executor) działa synchronicznie.
  • Użycie async i await sprawia, że kod jest łatwiejszy do odczytania niż w przypadku użycia .then().

Obsługa wielu obietnic:

  • Promise.all(): Stosuje podejście fail-fast. Jeśli jedna obietnica zawiedzie, cała grupa zostanie odrzucona.
  • Promise.allSettled(): Czeka na zakończenie każdej obietnicy. Zwraca wyniki nawet wtedy, gdy niektóre zadania zakończą się błędem.

Podsumowanie:

  • Promise: Obsługuje wyniki asynchroniczne.
  • resolve: Oznacza sukces.
  • reject: Oznacza błąd.
  • async/await: Czystszy sposób pisania obietnic.
  • Promise.all: Przerywa działanie przy pierwszym błędzie.
  • Promise.allSettled: Kończy wszystkie zadania.

Źródło: https://dev.to/malik786/javascript-promises-2hn4