⊗jsSpPrmSS 174 of 294 menu

Promesas en estilo síncrono en JavaScript

Para resolver el problema del promise hell se ideó una sintaxis especial de promesas, que permite escribir código asíncrono mucho más fácilmente - en estilo síncrono.

Vamos a proceder a estudiarlo. Para empezar tomemos el código de la lección anterior:

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

Si nuestra función getSmth fuera síncrona, entonces el código de la función func podríamos reescribirlo de la siguiente manera:

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

La función getSmth, sin embargo, es asíncrona, por lo tanto el código anterior no funcionará. Pero, utilizando el estilo síncrono de promesas, podremos obtener algo similar. Hagámoslo.

Para empezar debemos declarar nuestra función func como asíncrona usando el comando especial async:

async function func() { }

Después de esto podremos dentro de la función func utilizar el comando especial await. Este comando, escrito antes de una promesa, hará que JavaScript espere hasta que la promesa se cumpla. Después de lo cual el comando devolverá el resultado de la promesa, y la ejecución del código continuará.

En nuestro caso, debemos escribir await antes de la llamada a getSmth. Dado que el resultado de llamar a esta función será una promesa, la ejecución posterior del código continuará solo después de que esta promesa se cumpla. Bueno, y el resultado de la promesa se puede guardar en una variable. Hagamos lo descrito:

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

Llamemos a getSmth varias veces:

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

Y ahora llamemos a getSmth en un ciclo:

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

Reescriba el siguiente código usando la sintaxis síncrona:

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar