Open benjavicente opened 2 years ago
Hola @benjavicente. Disculpa la demora en responder.
Las promesas se utilizan cada vez que se necesite realizar una operación asíncrona (donde es incierto en qué momento se dispondrá del resultado), y en general involucran un proceso externo "avisando" que el resultado está listo (por medio del message queue dentro del contexto del event loop). Los ejemplos de requests y acceso a la BD son correctos, pero no son los únicos. Por ejemplo, setTimeout
es otro ejemplo simple que es asíncrono también.
En este caso, el método jwtgenerator.sign
tiene una variante asíncrona si se le pasa un callback (último parámetro en el código que adjuntaste). Si bien se podría utilizar sólo con ese callback, la idea de "envolverlo" en una promesa utilizando new Promise((resolve, reject) => {})
es para poder utilizarlo de forma más simple con await
más adelante. Es un ejemplo típico de cómo "promisificar" una operación asíncrona con callbacks.
Es un ejemplo típico de cómo "promisificar" una operación asíncrona con callbacks.
Lo que no me había quedado claro era el porqué esta es una operación asíncrona, porque parece que no requiere de nada externo o similar donde el thead principal pueda seguir haciendo cosas mientras espera a finalizar.
Viendo el código llegué a esta función que me llevó al módulo crypto que menciona en algunas partes código asíncrono, así que supongo que lo que pasa es que la mayoría se ejecuta sincrónicamente y que debe haber una parte que no se ejecuta en JS 🤔
¿Por qué generan un JWT lo hacen con una promesa? Tenía entendido que las promesas se usaban cuando uno se comunicaba con un proceso externo, como al realizar requests a la web o a la bdd 🤔