⊗jsSpPrmSS 174 of 294 menu

Promiser i synkron stil i JavaScript

For å løse problemet med promise hell ble det utviklet en spesiell syntaks for promiser som tillater skriving av asynkron kode mye enklere - i synkron stil.

La oss begynne å studere den. Til å begynne med la oss ta koden fra forrige leksjon:

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

Hvis funksjonen vår getSmth var synkron, kunne vi ha omskrevet koden til funksjonen func på følgende måte:

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

Funksjonen getSmth er imidlertid asynkron, så koden ovenfor vil ikke fungere. Men ved å bruke synkron stil for promiser, kan vi oppnå noe som ligner. La oss gjøre det.

Først må vi deklarere funksjonen vår func som asynkron ved hjelp av et spesielt kommando async:

async function func() { }

Etter dette vil vi inne i funksjonen func kunne bruke et spesielt kommando await. Dette kommandoet, skrevet foran et promise, vil tvinge JavaScript til å vente inntil promiset er fullført. Deretter vil kommandoen returnere resultatet av promiset, og kodekjøringen vil fortsette.

I vårt tilfelle må vi skrive await foran kallet til getSmth. Siden resultatet av å kalle denne funksjonen vil være et promise, vil videre kodekjøring bare fortsatte etter at dette promiset er fullført. Vel, og resultatet av promiset kan lagres i en variabel. La oss gjøre det som er beskrevet:

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

La oss kalle getSmth flere ganger:

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

Og la oss nå kalle 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 synkron syntaks:

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