peek, whenComplete & handleError
Efectos secundarios, continuar por error, y un gancho de finalize — sin bajarte de la cadena a .stream.
Lección
El peek de la capa pull observa
valores a medida que se tiran. El
peek de la capa de eventos es la misma palabra para la misma idea en un stream
push: ejecuta un efecto secundario, deja pasar el evento sin cambios.
Los ganchos opcionales onError / onDone cubren las
otras dos notificaciones. Un callback que lanza se convierte en un evento de
error y la cadena continúa — el evento cuyo peek falló
no se reemite. Capa de eventos de fxdart, siguiendo a tap /
doOn* de Rx.
handleError es la forma por-error-y-continuar:
los errores que coinciden (todos los errores cuando se omite test)
ejecutan onError y el stream sigue adelante. Eso no es
onErrorResume, que
cancela la fuente y cambia. Usa handleError para registrar o
tragar un fallo puntual; usa onErrorResume para abandonar la
conexión. whenComplete es el
finalize de Rx: el callback se ejecuta
exactamente una vez, al terminar, ante un error, o al cancelar.
Aunque lance, la cadena igual se desmonta.
La cadena ya no baja a .stream para
endWith, ifEmpty, uniq,
takeRight, takeWhile tampoco — ahora son
métodos de FxEvents. uniq es global
(no adyacente): el conjunto de vistos crece sin límite, así que un feed de larga
vida más un uniq ilimitado es una fuga de memoria; prefiere
uniqAdjacent cuando solo deban eliminarse las
repeticiones consecutivas.
Capa de eventos de fxdart, siguiendo a tap,
catchError en su forma que no cambia de stream, y
finalize de Rx. Los nombres de la capa pull ganan donde ya
significan lo mismo: peek no tap,
takeRight no takeLast,
uniq no distinct.
Demo 1 · peek como efecto secundario
Demo 2 · endWith, e ifEmpty
Pruébalo tú
Ejercicio: whenComplete al terminar, y al cancelar.
peek — el original de la capa pull, que observa valores a medida que se tiran ·
onErrorResume — abandonar y cambiar; handleError es la forma que continúa ·
tap — efecto secundario data-first sobre un solo valor, no un stream