Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej
Czym jest Promise w JavaScript i jak szybko zrozumieć jego istotę?
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.