Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

121
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!