¿Qué superficie?

Cuatro superficies, un solo import. Elige la superficie que es el trabajo, y quédate en ella.

// Pick the surface the job is. fx(iterable) // data in hand fx(ids).mapConcurrent(n, fetch) // bounded I/O, order kept fxEvents(stream) // values over time either((r) { … }) / .mapEither / .attempt // failures as values

Lección

FxDart no son cuatro bibliotecas dentro de un gabán. Es un solo paquete porque un programa real cruza estos trabajos, y los nombres se mantienen cuando lo haces. El error es empezar por una lista de funciones. Empieza por el trabajo:

El trabajo es…Empieza conNo
Datos ya en mano; solo hace falta una parte fx(iterable) envolver un map/where/take de una línea
I/O sobre una colección conocida, como mucho n en vuelo, orden conservado .toAsync().map(f).concurrent(n) o .mapConcurrent(n, f) Future.wait(xs.map(f))
Los valores llegan cuando llegan (pulsaciones, tics, sockets) fxEvents(stream) un pipeline pull con sleep
El llamador maneja el fallo either / mapEither / attempt en la superficie en la que ya estás throw para errores de dominio; null con la razón perdida

Los nombres pull ganan en caso de colisión. takeUntil es el predicado de FxTS; el análogo de la capa de eventos es stopOn. Una palabra, un significado. Cruza en una costura con nombre: .toAsync() eleva datos a demanda, .pull() eleva eventos a demanda, .toStream() va al otro lado.

La regla del canal 0.8.10. attempt después de retryOn / retryOnError, nunca antes. Esos operadores vigilan el canal de error; una vez que un fallo es un Left no queda nada ahí que reintentar.

Dos trabajos que cruzan superficies se tratan como tutoriales propios: búsqueda con debounce (tiempo → gana la consulta más reciente → parseo tipado) y fetch concurrente acotado (un límite, orden conservado, cada fallo conservado). La rampa de acceso pull sigue empezando en fx.

Demo · cuatro trabajos, cuatro superficies

El mismo import. Cada bloque es el programa más pequeño que pertenece a esa fila de la tabla:

Relacionado: fx — la cadena pull · concurrent — el límite de I/O · fxEvents — la cadena push · errores tipados — fallos como valores · búsqueda con debounce · fetch concurrente acotado