O lekcji
Promise to obiekt reprezentujący zakończenie operacji asynchronicznej. Zamiast korzystać z „callbacków”, Promises pozwalają na bardziej eleganckie zarządzanie kodem asynchronicznym i lepszą obsługę błędów.
Przykład – Promise
Załóżmy, że mamy funkcję, która symuluje opóźnioną odpowiedź z serwera:
function pobierzDane() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const success = true; // Można zmienić na false, aby sprawdzić błąd
if (success) {
resolve("Dane zostały pobrane");
} else {
reject("Błąd podczas pobierania danych");
}
}, 2000);
});
}
// Użycie Promise
pobierzDane()
.then((wynik) => {
console.log(wynik); // "Dane zostały pobrane"
})
.catch((błąd) => {
console.log(błąd); // "Błąd podczas pobierania danych"
});
W powyższym przykładzie, Promise jest używane do zarządzania asynchronicznym procesem pobierania danych. resolve()
jest wywoływane, gdy operacja zakończy się sukcesem, a reject()
– gdy wystąpi błąd.
Chaining i async/await
async function main() {
try {
const dane = await pobierzDane();
console.log(dane);
} catch (error) {
console.log(error);
}
}
main();
async/await
to nowoczesne podejście do pracy z obietnicami, które pozwala na pisanie kodu asynchronicznego w sposób bardziej synchronny i czytelny.