Lecții din modul (1/4)
Promisiuni: ce sunt
O Promisă este o valoare care reprezintă rezultatul unei operațiuni care se va termina în viitor. Poate fi în una dintre cele trei stări:
- în așteptare — operațiunea este încă în curs
- realizat — s-a terminat cu succes, există o valoare
- respins — a eșuat, există o eroare
Odată ce părăsește starea în așteptare, este „rezolvat” pentru totdeauna.
Crearea unei Promisiune rezolvată
Cele mai comune două moduri — aproape niciodată nu vei crea o Promisiune „de mână” cu constructorul:
const p1 = Promise.resolve(42);
const p2 = Promise.reject(new Error('oops'));Citirea rezultatului: .then / .catch
Promise.resolve(10).then((v) => {
console.log(v); // 10
});
Promise.reject(new Error('no')).catch((e) => {
console.log(e.message); // 'no'
});.then primește o funcție care este apelată cu valoarea rezolvată.
.catch primește o funcție apelată cu eroarea în caz de respingere.
Înlănţuire
Fiecare .then returnează la rândul său o Promisiune: le puteți lega pentru a transforma
valoare pas cu pas.
Promise.resolve(5)
.then((n) => n * 2)
.then((n) => n + 1)
.then((n) => console.log(n)); // 11Dacă oricare dintre .then aruncă (sau returnează o Promisiune care eșuează), execuția
sare la primul .catch ulterior.
Constructor (rar)
const p = new Promise((resolve, reject) => {
if (Math.random() > 0.5) resolve('ok');
else reject(new Error('no'));
});Îl veți folosi numai atunci când trebuie să „promiteți” ceva care utilizează apeluri inverse (de exemplu, vechile API-uri DOM sau setTimeout).
Încearcă
Definiți `promisedVersion(n)` care, dat un număr, returnează o Promisiune rezolvată cu dublul lui n.
Afișează indiciu
return Promise.resolve(n * 2)
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Definiți `incrementThree(p)` care primește o Promisiune a unui număr și returnează o Promisiune a numărului + 3. Folosiți un lanț .then.
Afișează indiciu
p.then((n) => n + 3)
Soluție disponibilă după 3 încercări