Explorando RxJava en Android — Operadores de servicios públicos

Este artículo es parte de la serie de introducción de RxJava. Puede ver la serie completa aquí:

Operadores de servicios públicos

Retrasar

Este operador desplaza las emisiones de un Observable hacia adelante en el tiempo en una cantidad determinada. es decir, modifica su fuente Observablehaciendo una pausa durante un determinado incremento de tiempo antes de emitir cada uno de los elementos desde el Observable.

Implementación de la muestra: el siguiente código demuestra el uso del delay()operador. El código siguiente emite todos los elementos observables después de un retraso de 2 segundos.

Salida

onNext: A 
onNext: B
onNext: C
onNext: D
onNext: E
onNext: F

Hacer

Este operador registra una acción para tomar una variedad de eventos observables del ciclo de vida.

  • El doOnNext()operador modifica el observable fuente para que se invoca una acción cuando el onNext() se llama .
  • El doOnCompleted()operador registra una acción para que invoque una acción cuando se invoca onComplete() .
  • El doOnEach() operador modifica la fuente Observable para que notifique a un Observador de cada elemento y establece una devolución de llamada que se invocará cada vez que se emita un elemento.
  • El doOnSubscribe()operador registra una acción que se invoca cada vez que un observador se suscribe al Observable resultante .

Aplicación de la muestra: El código siguiente muestra el uso de doOnNext() , doOnEach() , doOnSubscribe() , doOnUnsubscribe()operadores.

Salida

doOnNext: A 
doOnNext: B
doOnNext: C
doOnNext: D
doOnNext: E
doOnNext: F
---------------
onUnSubscribe se llama
doOnEach: 1
doOnEach: 2
doOnEach: 3
doOnEach: 4
doOnEach: 5
Completo se llama

Materializar / Desmaterializar

Este operador representa tanto los artículos emitidos como la notificación enviada como artículos emitidos, o viceversa. Lo . materialize()hace es básicamente envolver los tipos de objetos observados en un observable Notificación objeto sobre el que podemos comprobar si los onNext(), onError()y / o onComplete()métodos se llaman. dematerialize(), como puedes imaginar, revierte el efecto .

Implementación de la muestra: el siguiente código demuestra el uso del materialize()operador. Desde el materialize()operador, podemos obtener el objeto de notificación. Usando este objeto, podemos verificar si el elemento emitido es: isOnNext()o isOnError()o osOnComplete(). Aquí, básicamente, podemos recuperar elementos que tienen éxito y omitir los elementos que dieron como resultado un error.

Salida

A B C D E F

ObserveOn

Este operador especifica el programador en el cual un observador observará este Observable. Por defecto, un Observable junto con la cadena de operador operará en el mismo hilo en el que se llama su método de Suscripción. El observeOn()operador especifica un Programador diferente que el Observable usará para enviar notificaciones a Observadores.

Implementación de la muestra: el siguiente código demuestra el uso del observeOn()operador.

Salida

2 * longitud de la cuerda: 2 
2 * longitud de la cuerda: 4
2 * longitud de la cuerda: 6
2 * longitud de la cuerda: 8
2 * longitud de la cuerda: 10
2 * longitud de la cuerda: 12

SuscribirEn

Este operador le dice a la fuente Observable qué hilo usar para emitir elementos al Observador.

Implementación de la muestra: el siguiente código demuestra el uso del subscribeOn()operador.

Salida

Emitir 100 en el hilo RxCachedThreadScheduler-1 
Recibido 1000 en el hilo RxCachedThreadScheduler-1
Emitir 200 en el hilo RxCachedThreadScheduler-1
Recibido 2000 en el hilo RxCachedThreadScheduler-1
Nota: Cuando se usan múltiples subscribeOns en sucesión, solo el primero entra en vigencia.

Intervalo de tiempo

Este operador convierte un Observable que emite elementos en uno que emite indicaciones de la cantidad de tiempo transcurrido entre esas emisiones. es decir, si estamos más interesados ​​en cuánto tiempo ha pasado desde el último elemento, en lugar de en el momento absoluto en que se emitieron los elementos, podemos utilizar el timeInterval()método.

Implementación de la muestra: el siguiente código demuestra el uso del timeInterval()operador.

Salida

onNext: Tiempo [time = 124, unit = MILLISECONDS, value = 0] 
onNext: Time [time = 100, unit = MILLISECONDS, value = 1]
onNext: Time [time = 98, unit = MILLISECONDS, value = 2]

Se acabó el tiempo

Este operador refleja la fuente Observable, pero emite una notificación de error si transcurre un período de tiempo particular sin ningún elemento emitido.

Implementación de la muestra: el siguiente código demuestra el uso del timeout()operador. El código siguiente retrasa la emisión de elementos por 1 segundo. Pero hemos agregado un tiempo de espera que arroja una excepción si no hay emisiones dentro de los 500 ms. Por lo tanto, el siguiente código arrojará un error.

Marca de tiempo

Este operador adjunta una marca de tiempo a cada elemento emitido por un Observable. Transforma los artículos en el tipo <T> de Timestamped, que contiene los elementos originales, junto con una marca de tiempo para cuando se emitió el evento.

Implementación de la muestra: el siguiente código demuestra el uso del timestamp()operador.

Salida

Tiempo [time = 1534671163644, unit = MILLISECONDS, value = 0] 
Timed [time = 1534671163744, unit = MILLISECONDS, value = 1]
Time [time = 1534671163845, unit = MILLISECONDS, value = 2]

Utilizando

Este operador crea un recurso desechable que tiene la misma duración que el Observable. El using()operador es una forma en que puede instruir a un Observable para que cree un recurso que existe solo durante la vida útil del Observable y se elimina cuando termina el Observable.

Implementación de la muestra: el siguiente código demuestra el uso del using()operador.

Salida

onNext: E 
onNext: x
onNext: a
onNext: m
onNext: p
onNext: l
onNext: e
Desechable: Ejemplo

¡Eso es chicos! Esta es la quinta parte de la serie sobre RxJava. Espero que hayas disfrutado de este artículo y lo haya encontrado útil, de ser así, aprieta el botón para aplaudir. Déjame saber tus pensamientos en la sección de comentarios.

Para conocer mas tecnologias pueden seguirme en mis redes sociales:

facebook: https://web.facebook.com/wilbeDEV/

facebook: https://web.facebook.com/TechManiako/

Grupo_facebook: https://web.facebook.com/groups/166091130742535/

YouTube: https://www.youtube.com/c/WILBERCCORIDEVELOPER

Blogs: https://www.techmaniako.com/ED/

GitHub: https://github.com/wilberCcoriHuman

web_oficial : https://www.techmaniako.com

Like what you read? Give Wilber Ccori huaman a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.