¿QUÉ ES LA PROGRAMACIÓN REACTIVA?

La programación reactiva es un paradigma de programación orientado a flujos de datos asíncronos y a la propagación automática de cambios. En lugar de escribir código que espera a que ocurran las cosas (imperativo), en la programación reactiva se declara qué se quiere hacer cuando los datos lleguen o cambien, y el sistema se encarga de propagar esos cambios de forma eficiente.

Principios fundamentales

  • Todo es un stream (flujo): Eventos de clic, respuestas HTTP, mensajes de WebSocket, cambios en una base de datos, sensores, etc., se tratan como flujos de datos continuos.
  • Observables: Son los productores de datos. Emiten valores a lo largo del tiempo.
  • Observers: Consumidores que reaccionan a esos valores.
  • Propagación de cambios: Cuando un dato cambia, todos los componentes que dependen de él se actualizan automáticamente.
  • Declarativo: Enfocado en el qué en lugar del cómo.

Ejemplo

Forma imperativa (tradicional)

button.addEventListener('click', () => {
  fetchData().then(data => {
    updateUI(data);
  });
});

Forma reactiva (RxJS)

fromEvent(button, 'click')
  .pipe(
    switchMap(() => fetchData()),
    map(data => transformData(data))
  )
  .subscribe(updateUI);

Ventajas de la programación reactiva

  • Excelente manejo de asincronía y eventos.
  • Código más limpio y mantenible en aplicaciones complejas.
  • Fácil composición de flujos con operadores (map, filter, debounceTime, combineLatest, switchMap, etc.).
  • Mejor manejo de errores y cancelación de operaciones.
  • Ideal para aplicaciones en tiempo real, dashboards, chats, actualizaciones en vivo y microservicios.