Lecții din modul (2/4)
asincron / așteaptă
async/await este o sintaxă mai clară pentru lucrul cu Promises: codul se citește ca
cod sincron, dar în culise folosește exact aceleași Promisiuni ca și lecția anterioară.
async function
O funcție declarată cu async always returnează o Promisiune.
async function forty() {
return 40;
}
forty(); // Promise { 40 }
forty().then((v) => console.log(v)); // 40Chiar dacă returnați o valoare „normală”, funcția o include într-o Promisiune rezolvată.
await
În interiorul unui async function puteți pune await înaintea unei Promise: execuția este întreruptă
până când Promisiunea se stabilește, apoi continuă cu valoarea rezolvată.
async function sum() {
const a = await Promise.resolve(10);
const b = await Promise.resolve(20);
return a + b; // 30
}Echivalent în stilul .then (mai detaliat):
function sum() {
return Promise.resolve(10).then((a) => Promise.resolve(20).then((b) => a + b));
}await propagă erori
Dacă Promisiunea este respinsă, await redă eroarea. Îl poți prinde cu un normal
try/catch:
async function read() {
try {
const x = await Promise.reject(new Error('no'));
return x;
} catch (err) {
return 'error: ' + err.message;
}
}
read(); // Promise { 'error: no' }Săgeată asincronă
const double = async (n) => n * 2;
double(5); // Promise { 10 }Încearcă
Definiți o „funcție asincronă addOne(p)” care primește o Promisiune a unui număr și returnează (sub formă de Promisiune) numărul + 1. Folosiți await.
Afișează indiciu
const n = așteaptă p; întoarce n + 1;
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Definiți `sumDouă(pa, pb)` asincron: primește două promisiuni de numere, returnează suma lor. Utilizați două așteptări secvențiale.
Afișează indiciu
așteptați fiecare, apoi returnați a + b.
Soluție disponibilă după 3 încercări