Decimos que algo es reactivo cuando reacciona, un ejemplo de esto son las celdas de excel que se calculan en base a otras, notas cómo cuando actualizamos el dato de una celda, el de la otra se actualiza automáticamente, luego por supuesto de ejecutar las operaciones deseadas, ese es el concepto abstracto de programación reactiva.
La programación reactiva, es un paradigma de programación, tal como lo son la programación orientada a objetos o la programación funcional.
En el centro de este paradigma están los datos y la ejecución asíncrona de las operaciones que realiza nuestro programa.
La ejecución asíncrona de instrucciones trae incontables beneficios, mejoras a la experiencia de usuario, al rendimiento de tu código, etc. Sin embargo, es más complicada de razonar y puede presentar desafíos como el compartir información entre dos operaciones que se ejecutan en distintos puntos del tiempo.
Uno puede pensar en la ejecución de un programa, como una línea del tiempo, como una flecha que va del inicio del programa, hasta el final. Durante este proceso, algunas operaciones se ejecutan en un orden previamente definido, primero a, luego b y luego c, a esto se le conoce como programación síncrona. Por otro lado, existen algunas operaciones que se ejecutan y sólo traen información al flujo, aunque no se sabe cuándo, a estos procesos los llamamos asíncronos.
---a------b------------c------------------>
---a------b---Ra---------c---Rc-------Rb-------->
Como mencioné, este beneficio de sacar operaciones fuera del flujo, puede traer enorme beneficios, pero hace de nuestro código y nuestro programa más difíciles de razonar. Es decir, ¿cómo hacemos que nuestro programa reaccione a datos que no sabe cuándo vendrán?
Para solucionar esto, se han implementado diferentes soluciones y patrones, uno de ellos el de la programación reactiva.
En programación reactiva, decimos que hay algunos tipos de datos que representan un dato a través del tiempo, esto quiere decir que esta referencia se mantiene actualizada, es decir “reacciona”. Uno de mis ejemplos favoritos es el que presenta Laurence Gonsalves en StackOverflow (https://stackoverflow.com/a/1028642).
x =
En este caso, las referencias mouse-x y mouse-y son una representación de las coordenadas del mouse a través del tiempo, lo que quiere decir que estos datos se mantienen actualizados sin que nosotros lo hagamos, siempre mantendrán el valor que se emita del mouse.
Aquí es donde los dos conceptos se entrelazan, la programación reactiva es interesante porque nos permite representar los valores de operaciones asíncronas con tipos de datos que siempre reflejan el valor de una operación a través del tiempo.
Esto es posible porque como parte del patrón de diseño existe el concepto de la propagación de cambio. Pongamos un ejemplo, supongamos que tengo la siguiente suma:
a = x + y
En un paradigma tradicional de programación, a es la suma de x + y, en el momento en el que se realiza la operación, si posteriormente modificamos x o modificamos y. A no se vería afectado.
En programación reactiva, en cambio, las modificaciones a x o y, pudieran significar que a debe recalcular su valor, recuerda, como las celdas de Excel que si modificamos un valor con el que están sincronizadas, la celda se recalcula.
Esta también es la razón por la que decimos que ciertos frameworks de JavaScript son reactivos, porque propagan cambios y recalculan sin que explícitamente el código se los indique, claros ejemplos son React, Angular y Vue.
Este enfoque de desarrollo nos permite expresar operaciones aunque el valor de algunos de los elementos aún no tengan valor, porque lo están esperando, vayan a cambiarlo porque el usuario interactúa con él, o bien, básicamente cualquier modificación.
Esto a su vez, se traduce en que nuestro programa es una representación del flujo de información, por ejemplo:
peliculas = peliculasAsync -> estructurarPeliculas -> convertirJSON;
Nota como en este pequeño pseudocódigo no se asume cuándo las películas estarán listas, o si estas cambian, se recalcula por completo la estructura y la conversión a JSON. Esto reduce la cantidad de código que escribimos porque no tenemos que estar al pendiente de actualizaciones o cuándo el resultado de peliculasAsync está completo, si este cambia, etc.
La programación reactiva es código más expresivo y una excelente solución a las complejidades del código asíncrono, en un siguiente tema hablaremos de una de las implementaciones, el patrón del Observador.
-
check_circle_outlineMódulo 1 | 7 clases
Introducción
expand_more -
check_circle_outlineMódulo 2 | 9 clases
Primeros pasos con Angular
expand_more -
check_circle_outlineMódulo 3 | 21 clases
Componentes a detalle
expand_more -
check_circle_outlineMódulo 4 | 14 clases
Servicios y Observadores
expand_more-
done_all
Clase 1
Actualizar a Angular 6
-
done_all
Clase 2
Servicios en Angular
-
done_all
Clase 3
Crear tu propio servicio
-
done_all
Clase 4
Consultas asíncronas
-
done_all
Clase 5
Inyector de dependencias en Angular
-
done_all
Clase 6
Compartir datos de un servicio
-
done_all
Clase 7
Programación reactiva
-
done_all
Clase 8
El patrón del observable
-
done_all
Clase 9
Observadores y Observables en RxJS
-
done_all
Clase 10
Operadores en RxJS
-
done_all
Clase 11
Async Pipe
-
done_all
Clase 12
Operador de navegación segura ?.
-
done_all
Clase 13
Async y suscripciones a un Observable
-
done_all
Clase 14
Servicios en Angular 6
-
-
check_circle_outlineMódulo 5 | 7 clases
Animaciones
expand_more -
check_circle_outlineMódulo 6 | 2 clases
Cierre del curso
expand_more
0 comentario(s)