En una operación sincrona se espera que la operación anterior se complete para que la siguiente sea ejecutada. Por otro lado las operaciones asincronas difieren de esto permitiendo continuar con la ejecución normal de la operación hasta que esta se complete. Por el momento nos vamos a quedar con eso.
Ahora lo segundo para entender el concepto es conocer aunque sea forma básica la existencia de los callbacks: Un callback es una función pasada como parámetro a otra función para que pueda ser ejecutada en un determinado momento. Y como dijimos anteriormente un callback no es más que una función pasada como parámetro y como bien sabemos las funciones pueden ser síncronas o asíncronas. Aplicando la misma lógica podemos decir entonces de que tenemos callbacks síncronos y callbacks asíncronos.
Volviendo a este caso tenemos la función glob y como dato para entender este problema tenemos que saber de que como esta definida la función glob esta es siempre una función async.
Teniendo solo esto en cuenta vamos a analizar el siguiente caso:
Ahora lo segundo que tenemos que entender es que las funciones en JS pueden tener el prefijo async, eso hace que llamada dicha función esta devuelve un objeto Promise. Esta Promise es justamente eso, una promesa de que va a haber un valor de retorno, para manejar el valor de dicha promesa deberemos acceder inmediatamente al verbo “then” para manejar la misma. Asimismo, existen otros verbos como por ejemplo “catch” en caso de que surja algún error. Técnicamente si estamos asignando un valor a una variable llamando a una async function esta se le adjudicara la promise y la función donde este declara continuara su proceso normalmente. Suponiendo que inmediatamente después de esto se llame a esa misma variable y la Promise no haya resuelto dicha acción este fallara porque intentara trabajar con un valor que no es el esperado sino que más bien es una Promise. Suponiendo otro caso donde se le asigne a una variable un valor definido por una async function y esta no se llame nuevamente en las siguientes acciones el proceso terminara y no se hará nada con el valor a menos que se haya definido un “then” que ejecutara una serie de acciones una vez resuelta la Promise.