RxJS!

Featured image

RxJS

Seguimossss parte II

Patrones

Patrón observer

A todo esto, no se si les suena algo, quizas lo sientieron nombrar o alguna clase de la facu… pero si, exactamente, el observer es uno de los patrones de diseño mas conocidos. Y RxJS tiene sus bases en estos 2 patrones: observer y el iterator.

Entonces, el patrón observer, es simple, tiene un objeto, denominado sujeto (subject), que tiene un estado. Si este estado cambia, este sujeto tiene la capacidad de “notificar” a sus suscriptores (observers) de este cambio. Un capo!

enter image description here

Nota: este “sujeto” que hablamos, es nuestro famoso Subject, va a ser nuestra forma de hacer una “multi difusion” de valores o eventos, hacia multiples Observers.

muchos valores hacia -> muchos observers

Patrón Iterator

El segundo patrón sobre el que RxJS tiene sus bases, es el iterator. El objetivo de este patrón es que nos permite poder acceder a los elementos de un objeto, de forma secuencial. Qui lo qui??? Le permite a una colección un medio para navegar por sus datos sin exponer su estructura interna.

La implementación es simple, recordemos los dos métodos: next(), para obtener el siguiente elemento en la colección, y hasNext (), para chequear si quedan elementos en dicha colección o no.

Observables Hot & Cold

Hot Observable (multicasting)

Hot&Cold sisi como la cancion de Katy Perry que todos se imaginan. Pero que significa todo esto??

Imaginemos este tema relacionándolo con la TV. Cuando estamos mirando un programa de un canal, 100 argentinos dicen, no importa desde que televisor lo veamos, a esa misma hora, TODOS nosotros vamos a estar recibiendo exactamente el mismo contenido (no metamos a Flow todavia en este tema!). A esto le llamamos observable hot. Todos los suscriptores, van a recibir lo mismo. (Abro parentesis, este tema de temperatura no tiene que ver solamente con este tema de la suscripcion, sino tambien afecta a todo el ciclo de vida de ese flujo de datos/stream. Pero lo veremos despues). Entonces, un observable hot, empieza a emitir ni bien se crea (esto tiene que ver con el data producer que vamos a ver despues), y el contenido que emite, es compartido por TODOS sus suscriptores.

Cold observable (unicasting)

Recordemos, los observables cold son vagosssss muy vagos. Solo esperan a que se suscriban para empezar a emitir (data producer). Por cada subscriber, estos observables empiezan una nueva ejecucion, por lo tanto los datos NO se comparten.

enter image description here

Que mentirosa, si hay por que! Porque cada suscripcion es una ejecucion DISTINTA del flujo de datos/streaming! Siguiendo la analogía pero esta vez con Flow o Netflix, ahora si cada vez que prendemos y queremos ver una serie, peli etc lo vemos desde el inicio, no importa si alguien ya lo transmitió, vio o lo que sea, nosotros no vamos a verlo ya empezado, sino siempre desde el inicio (para este ejemplo nos quedamos con eso, nada de adelantarnos capitulos y hacer forward eso es trampaaa). Vamos a ver mas adelante como transformar cold a hot y viceversa. Tambien quiero profundizar un poco mas ambos temas con ejemplos, ahora solo vimos los conceptos por arriba.

Bonus

enter image description here

Hace poco tuve el honor de utilizar la siguiente extension de chrome, que dejo aquí llamada MOCKMAN. Realmente un lujooooo!!! como su nombre indica, nos permite mockear nuestras llamadas HTTP con sus respectivos response y estado (success/error). Además de establecerles delay si se desea. Tomalo como un regalo del cielo cuando en tu ambiente tenes todos los servicios caidos. enter image description here

Espero les haya servido el post de hoy, stay tuned!