Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

261
Vistas
¿Async/await está bloqueando? si no, ¿por qué su resultado es diferente de las promesas?

Investigo un poco sobre async/await pero estoy confundido. Dice que async/await no bloquea. Miro el ejemplo de función asíncrona de developer.mozilla.org. referencia: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

 function resolveAfter2Seconds() { return new Promise(resolve => { setTimeout(() => { resolve('resolved'); }, 2000); }); } async function asyncCall() { console.log('calling'); const result = await resolveAfter2Seconds(); console.log(result); //uncomment this code to see promise result //resolveAfter2Seconds().then(result=>{ //console.log(result); //}); console.log('calling end'); } asyncCall();

el resultado async/await es

 > "calling" > "resolved" > "calling end"

pero el resultado de la promesa es

 > "calling" > "calling end" > "resolved"

Entonces, si async/await no bloquea, ¿por qué no consuela "finalizar llamada" antes de "resolver"?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Su código Promise no es el mismo que el de la variante asíncrona.

 async function asyncCall() { console.log('calling'); const result = await resolveAfter2Seconds(); console.log(result); console.log('calling end'); }

seria lo mismo que

 function asyncCall() { console.log('calling'); resolveAfter2Seconds() .then(result => { console.log(result); console.log('calling end'); }); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

como mencionó @zhulien, la palabra clave await es la magia.

Para entenderlo mejor ejecuta el siguiente código:

con await

 asyncCall(); console.log("this log you will see right after 'calling' log");

sin await (simplemente elimine await en asyncCall; sabe que está bien usar async sin await, pero no al revés).

 asyncCall(); console.log("this log you will see right after 'calling end' log");

entonces, en el mismo cierre, cualquier cosa después de la await se bloqueará, mientras que en el flujo de código continúa llamando a la función y eso es lo que el documento significaba como no bloqueante :)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda