groupsBy
Grupos en vivo a medida que se abren: una clave y un stream interno de cada valor posterior que la comparte.
Lección
El groupBy de la capa pull es un
terminal: tira de todo y te entrega un Map.
groupsBy es la versión en vivo. El primer valor de cada
clave emite un GroupedEvents — un registro de esa
key y un stream interno events — y cada
valor posterior con la misma clave se reenvía a ese interno. Los grupos
aparecen en el orden de primera aparición de la clave, a medida que se abren, no
después de que la fuente se haya cerrado.
Es la misma idea de FxEvents anidados que
window*, claveada por valor
en vez de por tiempo. Un widget puede suscribirse al interno de un grupo en el
momento en que aparece y ver los valores posteriores conforme llegan; no
tiene que esperar a un lote.
Si se define lastFor, el primer evento (o la completación) de
lastFor(key) completa ese grupo. Un
valor posterior con la misma clave abre uno nuevo — un timeout de inactividad por
usuario, una señal de «sesión terminada» por sala. Sin
lastFor, los grupos se quedan abiertos hasta que la fuente completa
(o falla, lo que hace fallar cada grupo en vivo y luego el exterior).
Cancelar el exterior completa los grupos en vivo en silencio, la misma regla de RxJS 9
que sigue la familia window. Capa de eventos de fxdart, según el
groupBy de Rx.
Demo 1 · Grupos a medida que se abren
Demo 2 · lastFor cerrando un grupo
Pruébalo tú
Ejercicio: agrupa SKUs por el prefijo de departamento.