Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación reactiva / react y whenever
whenever y when
La forma de un bloque react puede resultarte familiar.
Un bloque exterior que contiene varios bloques interiores, cada uno
actuando sobre el tema $_, es exactamente como se escribe
given/when.
Si tuvieras una sola lectura de temperatura en lugar de un flujo entero
de ellas, te ramificarías así:
given $temperature {
when 18 { say 'cool' }
when 21 { say 'warm' }
}El parecido con react/whenever es real,
pero los dos hacen trabajos muy distintos:
given/whenmaneja un valor, ahora mismo.givenfija$_a un solo valor; cadawhenlo comprueba ($_ ~~ 18), se ejecuta la primera coincidencia y el bloque termina. Es un condicional corriente y síncrono.react/whenevermaneja muchos valores, a lo largo del tiempo. Unwheneverno comprueba$_contra un patrón: se suscribe a un supply, y su cuerpo se ejecuta para cada valor que ese supply emita, cuando quiera que ese valor llegue. Todos loswheneverestán vivos a la vez, yreactsigue bloqueando hasta que todos sus supplies han terminado.
Así que when pregunta «¿coincide este valor?», mientras
que whenever dice «para cada valor que este flujo produzca
alguna vez, haz esto». El mismo esqueleto, vidas muy distintas: una rama
tomada una sola vez frente a una reacción que se ejecuta una y otra vez
según llegan los eventos.
Navegación del curso
← Supplies definidos fuera | Dos temporizadores →
💪 O ve directamente a los ejercicios de esta
sección.