Middle
Jak działa Promise w JavaScript?
sobes.tech AI
Odpowiedź od AI
- Obiekt reprezentujący możliwe końcowe zakończenie (lub niepowodzenie) operacji asynchronicznej i jej wartość wynikową.
- Stany promisa:
pending: stan początkowy, nie spełniony ani odrzucony.fulfilled: oznacza, że operacja zakończyła się pomyślnie.rejected: oznacza, że operacja zakończyła się błędem.
- Przejście z
pendingdofulfilledlubrejectednastępuje jednokrotnie i jest nieodwracalne. - Metody:
.then(onFulfilled, onRejected): przyjmuje dwie funkcje zwrotne. Pierwsza (onFulfilled) jest wywoływana przy sukcesie, druga (onRejected) w przypadku błędu. Oba argumenty są opcjonalne. Zwraca nowy promiss..catch(onRejected): skrót od.then(null, onRejected). Służy do obsługi błędów. Zwraca nowy promiss..finally(onFinally): jest wywoływana niezależnie od wyniku promisa (sukces lub błąd). Przydatne do czyszczenia zasobów. Zwraca nowy promiss.
- Tworzenie promisa:
new Promise((resolve, reject) => {
// Operacja asynchroniczna
const success = true;
if (success) {
resolve("Operacja zakończona sukcesem!"); // Przejście do stanu fulfilled
} else {
reject("Coś poszło nie tak..."); // Przejście do stanu rejected
}
});
- Łańcuchowanie promisa:
.then(),.catch(),.finally()zwracają promisy, co pozwala na tworzenie łańcuchów do wykonywania operacji asynchronicznych w kolejności.
fetch(url)
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Błąd:', error));