Sobes.tech
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 į fulfilled arba rejected į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));