⊗jsSpPrmSS 174 of 294 menu

Les promesses en style synchrone en JavaScript

Pour résoudre le problème de l'enfer des promesses (promise hell), une syntaxe spéciale pour les promesses a été inventée, permettant d'écrire le code asynchrone beaucoup plus facilement - dans un style synchrone.

Commençons par l'étudier. Pour commencer, prenons le code de la leçon précédente :

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

Si notre fonction getSmth était synchrone, alors le code de la fonction func pourrait être réécrit comme suit :

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

La fonction getSmth, cependant, est asynchrone, donc le code ci-dessus ne fonctionnera pas. Mais, en utilisant le style synchrone des promesses, nous pouvons obtenir quelque chose de similaire. Faisons cela.

Pour commencer, nous devons déclarer notre fonction func comme asynchrone à l'aide de la commande spéciale async :

async function func() { }

Après cela, nous pourrons à l'intérieur de la fonction func utiliser la commande spéciale await. Cette commande, écrite devant une promesse, forcera JavaScript à attendre jusqu'à ce que la promesse soit exécutée. Ensuite, la commande renverra le résultat de la promesse, et l'exécution du code continuera.

Dans notre cas, nous devons écrire await avant l'appel à getSmth. Puisque le résultat de l'appel de cette fonction sera une promesse, l'exécution ultérieure du code ne continuera qu'après l'exécution de cette promesse. Eh bien, le résultat de la promesse peut être enregistré dans une variable. Faisons ce qui a été décrit :

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

Appelons getSmth plusieurs fois :

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

Et maintenant, appelons getSmth dans une boucle :

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

Réécrivez le code suivant en utilisant la syntaxe synchrone :

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser