Bienvenido, soy Luis y esta vez les traigo un nuevo post.
Las arquitecturas sin servidor se están volviendo muy populares hoy en día y el tiempo de ejecución de NodeJS es una opción interesante en AWS Lambda. Sin embargo, un tiempo de ejecución asincrónico no siempre es una solución adecuada. Por lo tanto, comprender las promesas en Javascript es esencial para determinar cuándo utilizar las funciones Lambda de NodeJS en AWS.
En este artículo, analizaremos las características de javascript en orden cronológico. Como dice el título, ¡no tardará mucho, así que tengan paciencia conmigo!.
Lo primero es lo primero, sin bloqueo
Es un tema enorme y puede considerarse un tema para otro artículo. Sin embargo, es fundamental tener en cuenta que NodeJS es un lenguaje sin bloqueo y utiliza un único hilo para ejecutar sus operaciones.
¿Qué espera antes de ejecutar este fragmento de código NodeJS? La mayoría de la gente esperaría algo como esto:
1.Inicio 2.¡Dos segundos! 3.¡Cero segundos! 4.Terminando
Pero recuerde que NodeJS es asíncrono de forma predeterminada, por lo que el resultado de este código será este:
1.Inicio 4.Finalizando 3.¡Cero segundos! 2.¡Dos segundos!
Tenga en cuenta que todo sucede al mismo tiempo, siga adelante y ejecute este código en su terminal, comience a jugar. Comenzará a comprender lo que sucede debajo del capó o, opcionalmente, puede estar atento a un nuevo artículo sobre Single Thread en detalles que llegará pronto.
Las devoluciones de llamada son como los antepasados de las promesas
Entonces, tuvimos Callbacks antes que son la base de NodeJS, al usarlo tienes la sensación de que las cosas están sucediendo en secuencia.
Una devolución de llamada es una función llamada al finalizar una tarea determinada, esto evita cualquier bloqueo y permite que se ejecute otro código mientras tanto.
Para ilustrar las devoluciones de llamada, usemos el siguiente ejemplo creando la función «doWorkCallback». Esta función simplemente espera 2 segundos y devuelve un mensaje de error o una matriz, por lo que puede ejecutar en su terminal y alternar el retorno para ver ambos resultados mostrados en su pantalla.
Si no está familiarizado con esta sintaxis de ES6, utilice las funciones de flecha. También creé este fragmento con un código más simple con las mismas funciones:
Aquí podemos ver claramente que la sensación «sincrónica» es generada por la devolución de llamada que son las funciones pasadas a nuestra myFunction como argumento.
Vayamos a la definición oficial de promesa
El
Promise
objeto representa la finalización eventual (o falla) de una operación asincrónica y su valor resultante.
Cuando tiene un tiempo de ejecución asincrónico de forma predeterminada, las operaciones de recuperación eventualmente requerirán que conozca el resultado de una operación para determinar los próximos eventos en su aplicación o script. Es un ejemplo en el que usar la promesa es un enfoque adecuado, así que avancemos e investiguemos sus orígenes.
Esta necesidad de conocer el resultado de una operación asincrónica no es nueva y ha aparecido desde el principio. Están diseñados para administrar código asincrónico, como la mejora de devoluciones de llamada.
Aquí hay un ejemplo:
Usando el mismo ejemplo anterior, pero ahora usando promesas podemos ver sus 3 estados que están pendientes, cumplidos y rechazados. Por lo tanto, puede monitorear y tomar acciones en su aplicación o script en función de esos estados.
¡No seas tímido, sigue adelante y ejecuta este código en tu computadora! 🙂
Dije que no sería mucho, así que me detengo aquí, pero podríamos extender este tema al infierno de devolución de llamada, el encadenamiento de promesas y los temas de espera asíncrona. Pero el objetivo de este texto es explicar la promesa en su forma pura. Es fundamental conocer el problema que resuelven estas tecnologías y considerar estos aspectos a la hora de elegir su tiempo de ejecución de AWS Lambda.
¡Estén atentos para más contenido!
Añadir comentario