0Pricing
JavaScript Academy · Lekcja

Promises — stany, łańcuchy i obsługa błędów

Tworzenie i używanie obiektów Promise: stany (pending/fulfilled/rejected), łączenie za pomocą then oraz obsługa błędów przez catch/finally

Promises — stany, łańcuchy i obsługa błędów to bezpłatna lekcja JavaScript Academy na CoddyKit. To lekcja 2 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej JavaScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs JavaScript Academy zawiera 3 lekcji w sumie.

Wprowadzenie do Promise

Cel: Poznać podstawowe wzorce użycia Promise.

  • Stany: pending → fulfilled/rejected
  • Łączenie wywołań then
  • Obsługa błędów przez catch
  • Sprzątanie przez finally
Promises — stany, łańcuchy i obsługa błędów — ilustracja 1

Rozwiązywanie Promise

Promise rozpoczyna się w stanie pending i przechodzi do stanu fulfilled, gdy zostanie wywołane resolve.

// Create a Promise and resolve it
function waitMs(ms) {
  return new Promise(function (resolve) {
    setTimeout(function () {
      resolve("done");
    }, ms);
  });
}

console.log("Start");
waitMs(10).then(function (msg) {
  console.log("Resolved:", msg);
});
Promises — stany, łańcuchy i obsługa błędów — ilustracja 2

Odrzucanie i przechwytywanie

W przypadku błędów należy użyć reject(Error). Funkcja catch obsługuje każde odrzucenie występujące wcześniej w łańcuchu.

// Reject to signal an error; handle with catch
function maybeFail(ok) {
  return new Promise(function (resolve, reject) {
    if (ok) {
      resolve("ok");
    } else {
      reject(new Error("bad"));
    }
  });
}

maybeFail(true)
  .then(function (v) {
    console.log("A:", v);
    return maybeFail(false);
  })
  .catch(function (e) {
    console.log("Caught:", e.message);
  });
Promises — stany, łańcuchy i obsługa błędów — ilustracja 3

Podstawy łączenia then

Każdy then może zwrócić wartość lub Promise. Otrzyma ją kolejny etap.

// Chain then steps; return values flow to the next then
Promise.resolve(2)
  .then(function (n) {
    return n * 3;
  })
  .then(function (n) {
    console.log("Result:", n);
  });
Promises — stany, łańcuchy i obsługa błędów — ilustracja 4

Sprzątanie przez finally

finally służy do sprzątania po powodzeniu lub błędzie; nie otrzymuje wartości ani błędu.

// finally runs whether fulfilled or rejected
function task(ok) {
  return new Promise(function (resolve, reject) {
    ok ? resolve("yay") : reject(new Error("oops"));
  });
}

task(false)
  .catch(function (e) {
    console.log("Handled:", e.message);
  })
  .finally(function () {
    console.log("Cleanup done");
  });
Promises — stany, łańcuchy i obsługa błędów — ilustracja 5

Wprowadzenie do Promise.all

Promise.all rozwiązuje się tablicą wyników albo odrzuca, jeśli jeden z elementów zakończy się błędem.

// Promise.all waits for all; rejects fast if any fail
const a = waitMs(5);
const b = Promise.resolve("B");

Promise.all([a, b])
  .then(function (values) {
    console.log("All:", values);
  })
  .catch(function (e) {
    console.log("All failed:", e.message);
  });
Promises — stany, łańcuchy i obsługa błędów — ilustracja 6

Quiz: obsługa błędów Promise

Szybkie sprawdzenie: Gdzie obsługiwać błędy?

Promises — stany, łańcuchy i obsługa błędów — ilustracja 7

Podsumowanie

Podsumowanie: Należy używać resolve w przypadku powodzenia, reject w przypadku błędów, łączyć etapy za pomocą then, obsługiwać problemy przez catch oraz używać finally do sprzątania.

Promises — stany, łańcuchy i obsługa błędów — ilustracja 8

Często zadawane pytania

Czy lekcja „Promises — stany, łańcuchy i obsługa błędów” jest bezpłatna?

Tak — pełny tekst „Promises — stany, łańcuchy i obsługa błędów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu JavaScript Academy, przejdź na CoddyKit PRO. Kurs JavaScript Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Promises — stany, łańcuchy i obsługa błędów”?

Tworzenie i używanie obiektów Promise: stany (pending/fulfilled/rejected), łączenie za pomocą then oraz obsługa błędów przez catch/finally Ćwiczysz JavaScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć JavaScript Academy?

Nie wymagamy żadnego doświadczenia. JavaScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 3.

Ile czasu zajmuje lekcja „Promises — stany, łańcuchy i obsługa błędów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji JavaScript Academy?

Tak. Każda lekcja JavaScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pętla zdarzeń i podstawy zadań oraz mikrozadań
  2. Promises — stany, łańcuchy i obsługa błędów
  3. Promise.all / any / race / allSettled — wybór właściwego narzędzia
← Powrót do JavaScript Academy