Middle
Kaip veikia Promise JavaScript'e?
sobes.tech AI
Atsakymas iš AI
- Objektas, kuris atstovauja galimą galutinį (arba nesėkmę) asinchroninės operacijos užbaigimą ir jos rezultatinę reikšmę.
- Promiso būsenos:
pending: pradinė būsena, nei įvykdyta, nei atmesta.fulfilled: reiškia, kad operacija sėkmingai užbaigta.rejected: reiškia, kad operacija baigėsi klaida.
- Perėjimas iš
pendingįfulfilledarbarejectedįvyksta tik kartą ir yra negrįžtamas. - Metodai:
.then(onFulfilled, onRejected): priima dvi funkcijas. Pirmoji (onFulfilled) kviečiama sėkmės atveju, antroji (onRejected) klaidos atveju. Abi argumentai yra pasirenkami. Grąžina naują pažadą..catch(onRejected): trumpesnė forma.then(null, onRejected). Naudojama klaidų tvarkymui. Grąžina naują pažadą..finally(onFinally): kviečiama nepriklausomai nuo pažado rezultato (sėkmės ar klaidos). Naudinga išvalyti išteklius. Grąžina naują pažadą.
- Pažado kūrimas:
new Promise((resolve, reject) => {
// Asinchroninė operacija
const success = true;
if (success) {
resolve("Operacija sėkminga!"); // pereina į `fulfilled` būseną
} else {
reject("Kažkas nepavyko..."); // pereina į `rejected` būseną
}
});
- Pažadų grandinėjimas:
.then(),.catch(),.finally()grąžina pažadus, leidžiančius kurti grandines asinchroninių operacijų vykdymui sekos tvarka.
fetch(url)
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Klaida:', error));