ReactiveX - RxJs

ReactiveX - RxJs

¿Cuando usar Rx?

  • Eventos en la interfaz de usuario.
  • Cuando es necesario notificar sobre cambios en un objeto(s).
  • Comunicación por sockets.
  • Cuando necesitamos trabajar con flujos de información(Streams).

Piezas fundamentales de la programación reactiva

  • Observables
    • Son la fuente de información
    • Pueden emitir multiples valores, sólo uno o ninguno.
    • Pueden emitir errores
    • Pueden ser infinitos, finitos. (Completarse)
    • Pueden ser síncronos o asíncronos
  • Subscribers
    • Se subscriben a un observable, es decir, estar pendiente de lo que realiza el observable
    • Consumen / observan la data del observable
    • Pueden recibir los errores y eventos del observable
    • Desconocen todo lo que se encuentra detrás del observable
  • Operators
    • Es la pieza fundamental
    • Usados para transformar Observables ( map, group, scan...)
    • Usados para filtrar Observables (filter, distinct, skip, debounce...)
    • Usados para combinar Observables
    • Usados para crear nuevos observables
  • Ejemplo:
    • Rastrear la ubicación del usuario
    • Sólo tomar la ubicación cuando la precisión es menor a 20 metros
    • También seguir la aceleración y el sensor magnético para determinar el acimut
    • Combinar los valores del acimut y la ubicación
    • Enviar cada 5 segundos la información a una API
    • Con la respuesta del API, dibujar en el UI la información deseada.

Beneficios de la programación reactiva

  • Evitar el "Callback  Hell"
  • Trabajar de forma simple tareas síncronas y asíncronas
  • Uso de operadores para reducir y simplificar el trabajo
  • Es fácil transformar los flujos (streams) de información
  • Código más limpio y fácil de leer
  • Fácil de implementar. Lo más complicado es elegir qué operador necesitaos
  • Fácil anexionar procedimientos sin alterar el producto final.

ReactiveX:   rxjs firebase     Una API para programación asíncrona usando observables

  • Es una combinación de las mejores ideas del patrón Observer e Iterator y programación funcional.
  • Observer: Es un patrón de diseño de software que define una dependencia del tipo uno a muchos entre objetos, de manera que cuando  uno de los objetos cambia su estado, notifica este cambio a todos los dependientes.
    • Notificar cuando suceden los cambios
  • Iterador: En POO, el patrón iterado define una interfaz que declara los métodos necesarios para acceder secuencialmente a un grupo de objetos de una colección.
    • Poder ejecutar operaciones secuenciales
    • primero(),  siguiente(), hayMas() y elemento actual()
  • Programación Funcional: Es básicamente, crear un conjunto de funciones que tengan un objetivo específico. Es de decir, si tengo una función que reciba 'A', y retorna 'A+1', siempre que yo llame a esa función, retornará 'A+1'.
    • Tener funciones con tareas específicas que reciban argumentos y no mute la información
    •  Sin efectos secundarios, sin mutar la data.
    • Muchos lenguajes pasan por referencia los objetos.
    • ReactiveX o Rx previenen que estos objetos muten de manera accidental cuando transformamos la data con operadores o fluya la data a través de los Observers

Diagramas de canicas: ¿cómo leer los diagramas de canicas?



    • Los observables suelen llevar el signo $ al final: clicks$:
    • En el primer momento que el observer intervalo$ emite el primer valor, éste  va a pasar por el scan y la salida para este caso es (0+1=1).
    • Cuando intervalo$ emita el segundo valor 2 el scan  (que es un acumulador ) y la salida será (1+2=3).
    • Cuando intervalo$ emita el segundo valor 3  la salida será (3+3 = 6).
    • Cuando intervalo$ emita el segundo valor 4  la salida será (6+4 = 10).
    • Cuando intervalo$ emita el segundo valor 5 la salida será (10+5 = 15).
    • etc...
    • La línea vertical es la finalización del observable

    Observable: 










    Entradas populares de este blog

    Angular

    Spotify

    Document Object Model (DOM)