Paralelizar promesas para disminuir el tiempo de ejecución del código en JavaScript
Un pequeño ejemplo de un controlador que estaba haciendo esta tarde para un pequeño server con #nodejs y #express. Es una llamada que hace uno de los routers para conseguir una respuesta con una lista de usuarios filtrados y el total que existe en la base de datos:
La ejecuto en Postman y obtenemos los resultados de la query. Lo que me interesa es el tiempo de obtención de los datos aunque sea relativamente pequeño, unos 113ms de media:
Ahora vamos a refactorizar el código usando para obtener users y total de forma paralela en vez de forma secuencial (nos fijamos que tienen el await ambos). Esto lo hacemos con await Promise.all(promise 1, ..., promise n):
Es interesante que podemos deconstruir también todas las promesas dentro de Promise.all al definir las variables que lo van a contener. Cada variable debe corresponder con el orden en el que está escrito la correspondiente promesa en cada caso.
Como podemos ver en Postman el tiempo de ejecución se reduce considerablemente de unos 113ms a 57ms:
Saludos!