Czym jest Promise w JavaScript i jak szybko zrozumieć jego istotę?
Co to jest Promise w JavaScript i jak szybko zrozumieć jego istotę? Rozbieramy kilka przykładów promes, które pomogą szybko zrozumieć ich przeznaczenie.
·2 min. czytania
Udostępnij
Spis treściKliknij link, aby przejść do wybranego miejsca
Wyobraź sobie, że zamówiłeś kawę w kawiarni. Barista przyjmuje zamówienie, wydaje paragon i mówi: „Proszę chwilę poczekać”. Nie stoisz w miejscu, możesz usiąść przy stoliku, sprawdzić telefon lub odpowiedzieć na wiadomość. Kiedy kawa jest gotowa, barista woła cię – i otrzymujesz rezultat.
Promise w JavaScript działa tak samo:
Uruchamiasz zapytanie (na przykład do serwera) i otrzymujesz obietnicę (Promise), że odpowiedź będzie później.
JavaScript nie zatrzymuje wykonywania kodu – kontynuuje realizację innych zadań.
Kiedy wynik jest gotowy, Promise informuje o tym, i możesz go przetworzyć.
Prosty przykład Promise
function makeCoffee() {
return new Promise((resolve) => {
console.log("Zamówienie przyjęte...");
setTimeout(() => {
resolve("☕ Gotowe! Oto twoja kawa.");
}, 2000);
});
}
console.log("Na razie przeglądam telefon...");
makeCoffee().then((message) => console.log(message));
Najpierw wykona się console.log("Na razie przeglądam telefon..."), ponieważ obietnica nie blokuje kodu.
Później po 2 sekundach pojawi się "☕ Gotowe! Oto twoja kawa.", kiedy obietnica zostanie zakończona.
Jeśli coś pójdzie nie tak (na przykład kawa się skończy), możemy dodać .catch():
function makeCoffee() {
return new Promise((resolve, reject) => {
const coffeeReady = Math.random() > 0.5; // losowy sukces lub porażka
console.log("Zamówienie przyjęte...");
setTimeout(() => {
if (coffeeReady) {
resolve("☕ Gotowe! Oto twoja kawa.");
} else {
reject("❌ Przepraszam, kawa się skończyła.");
}
}, 2000);
});
}
makeCoffee()
.then((message) => console.log(message))
.catch((error) => console.log(error));
To jak w prawdziwym życiu: jeśli nie ma kawy, barista przeprasza, a ty otrzymujesz odpowiedź o błędzie.
Jak szybko się z tym zapoznać?
Spróbuj pisać obietnice samodzielnie: stwórz funkcję, która czeka 3 sekundy przed odpowiedzią, lub która losowo kończy się błędem. W ten sposób można szybko zrozumieć, jak działa asynchroniczny kod.
Ale zanim zaczniesz eksperymentować z obietnicami - musisz zrozumieć strukturę (resolve, reject, catch itp.). O tym jest osobny wpis.