combineLatest
En cada evento de cualquiera de los dos lados, emite combine de los dos valores más recientes — una vez que ambos lados han hablado al menos una vez.
Lección
Un formulario es válido cuando el nombre de usuario actual y la
contraseña actual pasan ambos — dos streams tecleados de forma
independiente, un estado derivado que debe ser correcto tras cada
pulsación en cualquiera de los dos.
combineLatest(other, combine) es esa forma: recuerda el
último valor de cada lado, y cada evento de cualquiera de los
streams vuelve a ejecutar combine sobre el par fresco.
Las reglas, con precisión. Nada se emite hasta que ambos lados han producido al menos un valor — no existe el par a medio inicializar. A partir de ahí, un evento de entrada produce exactamente un evento de salida. Y un lado que se cierra deja de actualizar, pero su último valor sigue en juego: el resultado solo se cierra cuando ambos lados se han cerrado.
Elige tu combinador según quién dispara. Si las actualizaciones
de cualquiera de los dos lados deben re-derivar el estado, este es tu
operador. Si solo los eventos de la fuente deben disparar — con
el otro stream meramente consultado por su último valor — eso es
withLatestFrom.
Contrasta con el zip del mundo pull,
que empareja el n-ésimo con el n-ésimo;
combineLatest empareja lo más nuevo con lo más nuevo y
nunca espera a que los índices se alineen. Capa de eventos de fxdart,
según el operador Rx del mismo nombre.
Demo 1 · Validación de formulario desde dos campos
Demo 2 · Un lado cerrado mantiene su última palabra
Pruébalo tú
Ejercicio: un estado de pantalla a partir de dos sensores.
withLatestFrom — unilateral: solo los eventos de la fuente emiten ·
zip — emparejamiento alineado por índice en el mundo pull ·
LiveValue — cuando lo que necesitas es el valor actual en sí