Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

125
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda