Salt la conținutul principal
Modulul 7 · Lecția 2 din 426/32 în curs~12 min
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.

JS
async function forty() {
  return 40;
}

forty(); // Promise { 40 }
forty().then((v) => console.log(v)); // 40

Chiar 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ă.

JS
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):

JS
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:

JS
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ă

JS
const double = async (n) => n * 2;
double(5); // Promise { 10 }

Încearcă

Exercițiu#js.m7.l2.e1
Încercări: 0Se încarcă…

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.

Se încarcă editorul...
Afișează indiciu

const n = așteaptă p; întoarce n + 1;

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#js.m7.l2.e2
Încercări: 0Se încarcă…

Definiți `sumDouă(pa, pb)` asincron: primește două promisiuni de numere, returnează suma lor. Utilizați două așteptări secvențiale.

Se încarcă editorul...
Afișează indiciu

așteptați fiecare, apoi returnați a + b.

Soluție disponibilă după 3 încercări