Lo que sea que se renderice aquí es lo que va a aparecer dentro de la aplicación. Pero estamos llevándolo al 11. Eso es bastante simple. La mayoría de las aplicaciones son mucho más complicadas que eso. Veo en el equipo de Hydrogen cientos de diferentes aplicaciones que están construidas que hacen algunas cosas increíbles dentro de sus loaders.
Así que consideremos lo que podría ser un poco más avanzado, lo que podría estar sucediendo. Así que dentro de nuestro loader, tal vez vamos a cargar algunos productos, luego tal vez vamos a cargar algunas reseñas, luego tal vez podríamos cargar recomendaciones. Y después de eso, también podríamos cargar el usuario que ha iniciado sesión para mostrar algo sobre quién ha iniciado sesión. Eso es genial. Este código realmente se ve muy, muy bien. Es realmente simple. Es fácil de entender. Carga esto, luego esto, luego esto. Se ve increíble.
Pero en realidad, hay un problema serio con este código. Específicamente, se llama lo que es una secuencia. Una secuencia es donde tenemos que cargar una cosa, y no es hasta que eso termina de cargar, que podemos proceder a cargar la siguiente cosa. Así que esencialmente, no estamos haciendo nada en paralelo. Estamos cargando uno, luego el otro, luego el otro, luego el otro. Así que esto es cuatro veces más lento de lo que necesita ser. Y la forma más fácil de resolver esto es simplemente envolver todo en promise.all.
Si envuelves todo en promise.all, ahora hay un await en la parte superior, y cargamos todo en paralelo, así que ahora la secuencia es plana. No hay ninguna espera en nada, y una vez que todo está hecho, podemos renderizar la UI. Pero si soy franco, esto no es tan intuitivo como esto. Como todo este asunto de promise.all, es un poco desafortunado JavaScript, siento que, los primitivos que tenemos, esto simplemente no se ve tan bien para muchos desarrolladores, y muchos desarrolladores, siento que, preferirían ver algo como esto.
Y la clave aquí, sin embargo, es que si alguna vez tienes más de un await en una función async no solo en Remix, solo en cualquier función async en JavaScript, si tienes más de un await, tienes una secuencia. Tal vez esa secuencia sea necesaria. Tal vez lo sea Pero si tienes más de un await, algo se está procesando, estás esperando que termine, y luego algo más se va a procesar después de eso. Así que si alguna vez ves más de un await en una sola función async, tal vez deberías considerar mirarlo, hablar sobre si es necesario, ¿podría ser paralelizado? Pero de nuevo, estamos llevándolo al 11, puede ser, no siempre es tan complicado. No siempre es tan fácil simplemente paralelizar todo en la función.
Comments