withLatestFrom
En cada evento de la fuente, emite combine de ese evento y el último valor del otro stream — el otro lado es contexto, no disparador.
Lección
Una petición se dispara y debe llevar la versión de configuración
vigente en ese momento. Llega un pedido y debe cotizarse al
tipo de cambio de ahora mismo. Hay dos streams implicados, pero
no son iguales: uno conduce, el otro se consulta.
withLatestFrom(other, combine) codifica esa asimetría —
cada evento de la fuente emite combine(event, latestOfOther),
mientras que los eventos en other actualizan su valor
recordado y no emiten nada.
Esa unilateralidad es toda la diferencia con
combineLatest, donde ambos
lados disparan. Elige preguntándote: ¿una actualización de configuración
debe producir salida por sí sola? Si sí,
combineLatest; si la configuración solo importa cuando una
petición resulta dispararse, withLatestFrom.
Los bordes, con honestidad. Los eventos de la fuente que disparan antes
de que other haya producido algo se
descartan — no hay último valor con el que sellarlos
(dale a other una semilla con startWith si esa
pérdida no te conviene). La vida útil sigue a la fuente: cuando se
cierra, la cadena se cierra, y el cierre de other
simplemente se ignora — un feed en vivo en el lado del contexto nunca
mantiene abierto el pipeline. Capa de eventos de fxdart, según el
operador Rx del mismo nombre.
Demo 1 · Sellando peticiones con la configuración actual
Demo 2 · El otro lado nunca dispara, nunca bloquea
Pruébalo tú
Ejercicio: cotiza cada pedido al tipo de cambio de su momento.
combineLatest — ambos lados disparan ·
sampleOn — la idea de disparador y último valor, sin combinar ·
fxEvents — startWith, para sembrar el lado del contexto