⊗jsSpPrmSS 174 of 294 menu

Promises i synkron stil i JavaScript

Til løsning af problemet promise hell blev der udtænkt en særlig syntaks for promises, som giver mulighed for at skrive asynkron kode meget lettere - i synkron stil.

Lad os begynde at studere det. Til at starte med tager vi koden fra den forrige lektion:

function func() { getSmth(2).then(res => { console.log(res); // vil udskrive 4 }); } func();

Hvis vores funktion getSmth var synkron, kunne koden for funktionen func omskrives på følgende måde:

function func() { let res = getSmth(2); console.log(res); // vil udskrive 4 }

Funktionen getSmth er imidlertid asynkron, så ovenstående kode vil ikke virke. Men ved at bruge den synkrone stil for promises, kan vi opnå noget lignende. Lad os gøre det.

Til at starte med skal vi erklære vores funktion func som asynkron ved hjælp af det særlige kommando async:

async function func() { }

Efter dette vil vi inde i funktionen func kunne bruge den særlige kommando await. Denne kommando, skrevet foran et promise, vil få JavaScript til at vente indtil promise er opfyldt. Derefter vil kommandoen returnere resultatet af promise, og udførelsen af koden fortsætter.

I vores tilfælde skal vi skrive await før kaldet til getSmth. Da resultatet af kaldet til denne funktion vil være et promise, vil den videre udførelse af koden kun fortsætte efter opfyldelse af dette promise. Nå, og resultatet af promise kan gemmes i en variabel. Lad os gøre beskrevet:

async function func() { let res = await getSmth(2); console.log(res); // vil udskrive 4 } func();

Lad os kalde getSmth flere gange:

async function func() { let res1 = await getSmth(2); let res2 = await getSmth(3); console.log(res1 + res2); // vil udskrive 13 } func();

Og lad os kalde getSmth i en løkke:

async function func() { let arr = [1, 2, 3, 4, 5]; let sum = 0; for (let elem of arr) { sum += await getSmth(elem); } console.log(sum); } func();

Omskriv følgende kode via den synkrone syntaks:

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis