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

126
Vistas
¿Qué espera hace exactamente y tiene algo que ver con la cola de microtareas?

Soy nuevo en JavaScript y estoy tratando de entender qué hace await y cuál es su relación con la cola de microtareas. El siguiente código es solo para fines de aclaración.

 async function afunc() { console.log("a1"); const b = bfunc(); console.log("a2"); b.then((value) => { console.log(value); }); return "a value"; } async function bfunc() { console.log("b1"); await console.log("waiting"); console.log("b2"); return "b value"; } const a = afunc(); a.then((value) => { console.log(value); }); console.log("script end");

Y los resultados son:

 a1 b1 waiting a2 script end b2 a value b value

En MDN dice

La expresión await hace que la ejecución de la función asíncrona se detenga hasta que se liquide una Promesa (es decir, se cumpla o se rechace), y reanudar la ejecución de la función asíncrona después del cumplimiento.

¿Cuándo sucede exactamente este 'currículum'? ¿Y tiene algo relacionado con la cola de microtareas en términos de orden de ejecución?

Además, espero que b value aparezca antes a value , ya que parece que b.then() se insertará en la cola de microtareas antes a.then() , y el resultado real me confundió mucho.

¡Cualquier ayuda sería muy apreciada!

Editar : si elimina await en bfunc, el resultado sería como:

 a1 b1 waiting b2 a2 script end b value a value
about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Cuando MDN dice resume execution of the async function , significa que esperará a que se complete la función interna y luego continuará ejecutando la función externa.

Por ejemplo:

 async function outer() { console.log("outer function start"); await inner(); console.log("outer function end"); } async function inner() { console.log("inner function start"); await new Promise(resolve => setTimeout(() => resolve(), 1000)); console.log("inner function end"); } outer();

Registrará:

 outer function start inner function start * 1 second pause * inner function end outer function end

Creo que la razón por la que está viendo los registros fuera de orden es porque está ejecutando b.then , pero también hay un código fuera de la devolución de llamada asíncrona, por lo que el código posterior no se ejecuta necesariamente en orden.

JavaScript promete trabajo debido a las microtareas, por lo que están relacionadas.

Las promesas de JavaScript y la API de Mutation Observer usan la cola de microtareas para ejecutar sus devoluciones de llamada. - MDN

¡Espero que esto ayude!

about 4 years ago · Santiago Gelvez 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