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

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);
});

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);
});

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);
});

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");
});

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);
});

Quiz: obsługa błędów Promise
Szybkie sprawdzenie: Gdzie obsługiwać błędy?

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.

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
- Pętla zdarzeń i podstawy zadań oraz mikrozadań
- Promises — stany, łańcuchy i obsługa błędów
- Promise.all / any / race / allSettled — wybór właściwego narzędzia