La programación reactiva lleva la programación funcional un poco más allá, agregando el concepto de flujo de datos y propagación de cambios de datos.
En programación imperativa, se puede asignar un valor a una variable de la siguiente manera:
x = y + z
Aquí, la suma de y+z se asignará a la variable x , si llamamos esta función, los cambios que ocurran a y y a z no modificaran a x.
En la programación reactiva, el valor de x debe actualizarse siempre que cambien los valores de y o z.
Entonces, si los valores iniciales son y = 1 y z = 1, tendrás
x = y + z = 2.
Si y (o z) cambia su valor, esto no significa que x cambia automáticamente, pero debe implementar un mecanismo para actualizar los valores de x cuando se cambian los valores de y y z.
La programación reactiva funcional es un nuevo paradigma de programación; Erik Meijer lo hizo popular (quien creó la biblioteca Rx para .NET cuando trabajaba en Microsoft) y se basa en dos conceptos:
- El código "reacciona" a los eventos.
- El código maneja los valores a medida que varían en el tiempo, propagando los cambios a cada parte del código que usa esos valores.