Sobes.tech
Middle

Jak działa Promise w JavaScript?

sobes.tech AI

Odpowiedź od AI

  • Obiekt reprezentujący możliwe końcowe zakończenie (lub niepowodzenie) operacji asynchronicznej i jej wartość wynikową.
  • Stany promisa:
    • pending: stan początkowy, nie spełniony ani odrzucony.
    • fulfilled: oznacza, że operacja zakończyła się pomyślnie.
    • rejected: oznacza, że operacja zakończyła się błędem.
  • Przejście z pending do fulfilled lub rejected następuje jednokrotnie i jest nieodwracalne.
  • Metody:
    • .then(onFulfilled, onRejected): przyjmuje dwie funkcje zwrotne. Pierwsza (onFulfilled) jest wywoływana przy sukcesie, druga (onRejected) w przypadku błędu. Oba argumenty są opcjonalne. Zwraca nowy promiss.
    • .catch(onRejected): skrót od .then(null, onRejected). Służy do obsługi błędów. Zwraca nowy promiss.
    • .finally(onFinally): jest wywoływana niezależnie od wyniku promisa (sukces lub błąd). Przydatne do czyszczenia zasobów. Zwraca nowy promiss.
  • Tworzenie promisa:
new Promise((resolve, reject) => {
  // Operacja asynchroniczna
  const success = true;
  if (success) {
    resolve("Operacja zakończona sukcesem!"); // Przejście do stanu fulfilled
  } else {
    reject("Coś poszło nie tak..."); // Przejście do stanu rejected
  }
});
  • Łańcuchowanie promisa: .then(), .catch(), .finally() zwracają promisy, co pozwala na tworzenie łańcuchów do wykonywania operacji asynchronicznych w kolejności.
fetch(url)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Błąd:', error));