⊗jsSpPrmSS 174 of 294 menu

Promises im synchronen Stil in JavaScript

Um das Problem des Promise Hells zu lösen, wurde eine besondere Syntax für Promises erfunden, die es erlaubt, asynchronen Code viel einfacher zu schreiben - im synchronen Stil.

Lasst uns mit seinem Studium beginnen. Nehmen wir zunächst den Code aus der vorherigen Lektion:

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

Wenn unsere Funktion getSmth synchron wäre, dann könnten wir den Code der Funktion func wie folgt umschreiben:

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

Die Funktion getSmth ist jedoch asynchron, daher wird der obige Code nicht funktionieren. Aber indem wir den synchronen Stil von Promises nutzen, können wir etwas Ähnliches erreichen. Tun wir das.

Zuerst müssen wir unsere Funktion func als asynchron mit Hilfe des speziellen Befehls async deklarieren:

async function func() { }

Danach können wir innerhalb der Funktion func den speziellen Befehl await verwenden. Dieser Befehl, geschrieben vor einem Promise, zwingt JavaScript zu warten, bis das Promise erfüllt ist. Danach gibt der Befehl das Ergebnis des Promises zurück, und die Codeausführung wird fortgesetzt.

In unserem Fall müssen wir await vor dem Aufruf von getSmth schreiben. Da das Ergebnis des Aufrufs dieser Funktion ein Promise ist, wird die weitere Ausführung des Codes nur nach der Erfüllung dieses Promises fortgesetzt. Nun, und das Ergebnis des Promises kann in eine Variable geschrieben werden. Setzen wir das Beschriebene um:

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

Lasst uns getSmth mehrmals aufrufen:

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

Und jetzt rufen wir getSmth in einer Schleife auf:

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();

Schreiben Sie den folgenden Code durch die synchrone Syntax um:

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικά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
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen