Sellar cada petición con la config más reciente

Empate async

Requisito

Una app dispara cuatro peticiones a la API mientras, en segundo plano, los despliegues suben la versión de config v1 → v2 → v3 en desplazamientos fijos. Cada petición debe sellarse con la versión de config que estaba vigente cuando la petición se disparó — y un cambio de config por sí solo no debe emitir nada. Imprime las cuatro peticiones selladas. Ambos calendarios están simulados en el código; las dos versiones deben imprimir las líneas que aparecen bajo Salida esperada.

Salida esperada
GET /orders (config v1)
GET /stock (config v2)
GET /prices (config v2)
GET /refunds (config v3)

Lado a lado

RxDart

FxDart

Por qué difieren

No difieren. Este es el hermano asimétrico de combineLatest — un stream dirige, el otro solo se consulta — y ambos paneles lo nombran de la misma manera: withLatestFrom emite por petición, sellada con la config más fresca vista hasta ahora, y guarda silencio cuando solo cambia la config. Sin andamiaje de fusión etiquetada y sin pliegue con scan: las dos cadenas son idénticas operador por operador.

La capa de eventos de fxdart absorbe el enfoque Rx para el lado push: fxEvents es una cadena envoltorio fina sobre Streams llanos — nunca una extensión, así que no colisiona con nada, rxdart incluido. El catálogo de operadores de RxDart sigue siendo mucho más amplio; fxdart mantiene pequeño el núcleo de eventos y cruza al pipeline pull tipado con .pull() cuando el procesamiento por valor crece. Para sellar un stream vivo con el último valor de otro, los dos lados son equivalentes: empate.

Benchmark

Sin benchmark para este ejemplo. Este operador se define por el tiempo transcurrido, no por el trabajo realizado: ambos lados esperan las mismas ventanas, así que una barra estaría midiendo los temporizadores de Dart y no las librerías. Acortar las ventanas tampoco sirve — cuántos valores produce una ráfaga pasaría a depender de lo rápida que sea la máquina, y ya no se podría comprobar que ambos lados dan un resultado idéntico. Por eso los ejemplos construidos sobre operadores de temporización se dejan sin medir; los que solo usan retardos para simular E/S sí se miden, con esos retardos puestos a cero.