Paradigmas de programación

Declarativa

Reactiva

Los resultados se obtienen transformando un "stream" de eventos (datos) y propagando (reaccionando a) los cambios automáticamente.

Máximo valor en lista de enteros...
import { fromEvent } from "https://cdn.skypack.dev/rxjs@7.3.0";
import { scan, map } from "https://cdn.skypack.dev/rxjs@7.3.0/operators";

const output = document.querySelector("output");
const button = document.querySelector("button");

fromEvent(button, "click")
  .pipe(map(ev => ev.clientX), scan((total, n) => total < n ? n : total))
  .subscribe((max) => {
    output.textContent = "Max X = " + max;
  });

🔍 Nota: documentación de rxjs.

Prueba aquí...
<button>Click me in different places</button>
<output></output>
import { fromEvent } from "https://cdn.skypack.dev/rxjs@7.3.0";
import { scan, map } from "https://cdn.skypack.dev/rxjs@7.3.0/operators";
const output = document.querySelector("output");
const button = document.querySelector("button");
fromEvent(button, "click")
  .pipe(map(ev => ev.clientX), scan((total, n) => total < n ? n : total))
  .subscribe((max) => { output.textContent = "Max X = " + max; });