DEV Community

Cristian Fernando
Cristian Fernando

Posted on

Paracetamol.js馃拪| #132: Explica este c贸digo JavaScript

驴Cu谩l es el orden de ejecuci贸n del siguiente c贸digo JavaScript?

Dificultad: Avanzado

async function asyncFunc() {
  console.log('asyncFunc() starts'); 
  return 'abc';
}

asyncFunc().
  then(x => { 
    console.log(`Resolved: ${x}`);
  });
console.log('Task ends'); 
Enter fullscreen mode Exit fullscreen mode

A. asyncFunc() starts, Resolved: abc, Task ends
B. Task ends, asyncFunc() starts, Resolved: abc
C. asyncFunc() starts, Task ends, Resolved: abc
D. Ninguna de las anteriores

Respuesta en el primer comentario.


Discussion (1)

Collapse
duxtech profile image
Cristian Fernando Author

Respuesta:
C. asyncFunc() starts, Task ends, Resolved: abc

  • El interprete de JavaScript llega a la l铆nea donde se llama a la funci贸n asyncFunc y muestra por consola asyncFunc() starts.
  • Como asyncFunc es una funci贸n as铆ncrona, por definici贸n regresar谩 una promesa, por ello dicha promesa pasar谩 a almacenarse temporalmente en el Micro Task Queue de JavaScript.
  • Salimos de la funci贸n y ahora mostramos por consola Task ends.
  • Posteriormente el Even Loop verifica que el Call Stack esta vac铆o y desde el Micro Task Queue pasamos la promesa para su ejecuci贸n.
  • Finalmente mostramos por consola Resolved: abc y el programa termina.

Recuerda que el Micro Task Queue en JavaScript es exclusivo para manipular promesas a diferencia por ejemplo del Task Queue que administra Web API's.