DEV Community

Cristian Fernando
Cristian Fernando

Posted on

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

Explica este c贸digo JavaScript

Dificultad: Avanzado

function asyncFunc() {
  console.log('asyncFunc');
  return new Promise(
    (resolve, _reject) => {
      console.log('new Promise()');
      resolve();
    });
}
console.log('START');
asyncFunc()
  .then(() => {
    console.log('.then()'); // (A)
  });
console.log('END');
Enter fullscreen mode Exit fullscreen mode

A. START, asyncFunc, .then(), new Promise(), END
B. asyncFunc, new Promise(), START, .then(), END
C. START, asyncFunc, new Promise(), END, .then()
D. START, asyncFunc, new Promise(), END, undefined

Respuesta en el primer comentario.


Discussion (1)

Collapse
duxtech profile image
Cristian Fernando Author • Edited on

Respuesta:
C. START, asyncFunc, new Promise(), END, .then()

  • Empezamos ejecutando el c贸digo s铆ncrono que nos encontramos antes de la llamar a la funci贸n asyncFunc, por ello el primer mensaje por consola es START.

  • Al llamar a asyncFunc ejecutamos todo el c贸digo s铆ncrono que se encuentre dentro de la funci贸n, por ello el segundo y tercer mensaje por consola es asyncFunc y new Promise() respectivamente.

  • La funci贸n asyncFunc regresa una promesa per se, por Even Loop dicha promesa no entra directamente en el Call Stack de Javascript sino que se la aparta en el Micro Task Queue que se caracteriza por priorizar las promesas siempre.

  • Salimos de la funci贸n y ejecutamos la 煤ltima l铆nea de c贸digo s铆ncrono mostrando por consola END.

  • El Call Stack ahora esta vac铆o, entonces la promesa que se encontraba en el Micro Task Queue pasa al Call Stack y finalmente mostramos por consola .then().