pipe1
Aplica una función a un valor, esperándolo antes si el valor es un Future.
Lección
pipe1 es el bloque de construcción de un solo paso que
pipe usa internamente: aplica f a
a, pero si a es un Future, lo
espera primero. Si a es un valor normal, f se
ejecuta al momento y pipe1 devuelve lo que devuelva
f — de forma síncrona, sin ninguna envoltura
Future.
La gracia es que f nunca tiene que saber ni preocuparse de
si el valor que recibe viene de trabajo síncrono o asíncrono aguas
arriba: pipe1 lo normaliza por ti. Resulta muy cómodo
cuando estás componiendo un valor que a veces es un
Future (por ejemplo, el resultado de un paso asíncrono
anterior) y quieres que el siguiente paso se escriba igual en ambos
casos.
Como solo maneja un paso, puedes anidar llamadas a pipe1
para componer una cadena corta, o recurrir al pipe completo
(una List<Function>) cuando hay más de uno o dos
pasos.
Demo 1 · Un valor normal (sin Future)
Sin ningún Future de por medio, pipe1 simplemente llama a
f(a) directamente y devuelve un valor normal:
Demo 2 · Esperar antes a un Future
Cuando a es un Future, pipe1 lo
espera antes de llamar a f — encadena unos cuantos para
componer pasos asíncronos de uno en uno:
Pruébalo tú
Ejercicio: usa pipe1 para convertir un nombre diferido en un saludo.
pipe — pipeline de varios pasos construido sobre pipe1 ·
fx — la alternativa tipada en forma de cadena ·
delay & sleep — las utilidades asíncronas usadas arriba