Fusionar código fuente en rxjava
Este artículo primero brindará una lista de los operadores principales de ReactiveX y los enlaces de los documentos correspondientes, seguido de un árbol de decisiones para ayudarlo a elegir el operador apropiado de acuerdo con escenarios específicos. Finalmente, hay una lista alfabética de operadores específicos del idioma.
Si desea implementar sus propios operadores, puede consultar aquí: Implementación de operadores personalizados.
Operación de creación
Operador utilizado para crear observables.
Crear: crea un objeto observable desde cero llamando a los métodos del observador.
Diferido: no cree este observable hasta que los observadores se suscriban y cree un nuevo observable para cada observador.
Null/Never/Throw: crea un observable especial con comportamiento limitado.
From convierte otros objetos o estructuras de datos en objetos observables.
Intervalo crea un observable que emite periódicamente una secuencia de números enteros.
Simplemente convierte un objeto o un conjunto de objetos en un Observable que emite esos objetos.
Rango: crea un Observable que emite una secuencia de números enteros en un rango específico.
Repetir: crea un observable que emite datos específicos o secuencias de datos repetidamente.
Inicio: crea un observable que emite el valor de retorno de la función.
Temporizador: crea un objeto observable que transmite datos después de un retraso específico.
Operaciones de transformación
Estos operadores se pueden utilizar para transformar datos transmitidos observables. Las explicaciones detalladas se pueden ver en la documentación de cada operador.
Buffer-cache puede entenderse simplemente como un caché, que recopila periódicamente datos de un conjunto observable y luego empaqueta y transmite estos conjuntos de datos en lugar de transmitirlos uno por uno.
Mapa plano (mapa plano): el mapa plano convierte los datos emitidos por el observable en una colección de observables y luego aplana los datos emitidos por el observable en un único observable, lo que puede considerarse una extensión del Proceso de estructura de datos de anidamiento.
Agrupar por agrupación: divida el observable original en conjuntos de observables, agrupe los datos transmitidos por el observable original por clave, y cada observable transmite un conjunto diferente de datos.
El mapeo transforma los datos transmitidos observables aplicando una función a cada elemento de la secuencia. Básicamente, ejecuta una función en cada elemento de la secuencia. El parámetro de la función son estos datos.
Escanear: escanea, aplica una función a cada elemento de datos emitido por el Observable y luego emite estos valores a su vez.
Ventana
:
Ventana, descompone periódicamente los datos observables en algunas ventanas observables y luego inicia estas ventanas en lugar de iniciarlas todas a la vez en un proyecto. Similar al almacenamiento en búfer, pero
Buffer transfiere datos, Windows transfiere datos observables y cada observable transfiere un subconjunto de los datos observables originales.
Operaciones de filtrado
Estos operadores se utilizan para seleccionar entre datos transmitidos observables.
Rebote: los datos se transmiten solo después de un período de inactividad. En términos sencillos, la cirugía se realiza después de que no se ha realizado ninguna cirugía durante un período de tiempo.
Distinct deduce elementos duplicados y filtra elementos de datos duplicados.
elemento en: obtiene el valor y obtiene el elemento de datos en una ubicación específica.
Filtro: filtra los elementos de datos que no pasan la prueba de predicado y solo transmite los elementos de datos que pasan la prueba.
primero: el primer elemento, solo se transmite el primer dato que cumple las condiciones.
Ignorar elementos: ignora todos los datos y solo conserva las notificaciones de terminación (onError o onCompleted).
último: el último elemento, solo se transmite el último dato.
El muestreo de muestras transmite periódicamente los datos más recientes, lo que equivale al muestreo de datos. Algunas implementaciones se denominan ThrottleFirst.
Omitir: omite el elemento de datos anterior.
Omitir el último: omitir los siguientes elementos de datos.
Take sólo conserva elementos de datos anteriores.
TakeLast sólo conserva los últimos datos.
Operaciones de composición
El operador de composición se utiliza para combinar múltiples observables en uno solo.
Y/Entonces/cuándo: fusiona dos o más conjuntos de datos de emisiones observables mediante modo (y condición) y plan (luego ordena).
combinar lo último: cuando cualquiera de los dos observables transmite un dato, los últimos datos transmitidos por cada observable (un * * * dos datos) se combinan mediante una función específica y luego se transmite el resultado de esta función.
Unir: siempre que un observable transmite un elemento de datos, los datos transmitidos por los dos observables se unirán siempre que estén dentro de la ventana de tiempo definida por el elemento de datos transmitido por el otro observable.
Fusionar: combina dos observables en uno.
Comenzar con: transmite la secuencia de datos o los elementos de datos especificados antes de transmitir la secuencia de datos observables original.
switch: convierte un observable que transmite una secuencia de observables en un observable que transmite los datos transmitidos más recientemente por el observable.
zip: el paquete combina datos de múltiples transferencias observables utilizando una función específica y luego transfiere el resultado de esa función como una única transferencia de datos.
Manejo de errores
Estos operadores se utilizan para recuperarse de notificaciones de error.
catch: captura, continúa la operación de secuencia, reemplaza el error con datos normales y se recupera de la notificación onError.
Reintentar: inténtalo de nuevo. Si el Observable envía una notificación de error, vuelva a suscribirse y espere que finalice correctamente.
Operaciones auxiliares
Conjunto de operadores que procesan datos observables.
Retraso: retrasa la transmisión de datos de resultados durante un período de tiempo.
El registro de una acción requiere algunos eventos observables del ciclo de vida, lo que equivale a una operación simulada.
Materialización/desmaterialización: transfiere datos transmitidos y notificaciones como datos y viceversa.
observar en: especifica el programador (subproceso de trabajo) observado por el observador.
serializar: fuerza al objeto observable a transmitir datos en orden, la función es válida.
suscribirse-La operación que se realizará después de recibir los datos y notificaciones enviadas por el Observable.
suscribirse al: especifica el programador en el que se debe ejecutar el Observable.
Intervalo de tiempo: convierte un observable en un observable que requiere tiempo entre transferencias de datos.
Tiempo de espera: agrega un mecanismo de tiempo de espera para enviar una notificación de error si no se envían datos después de un período de tiempo específico.
marca de tiempo: agrega una marca de tiempo a cada elemento de datos emitido por el Observable.
Uso: crea un recurso único que existe solo durante la vida útil del observable.
Operaciones condicionales y booleanas
Estos operadores se pueden utilizar en elementos de datos únicos o múltiples, así como en elementos de datos observables.
todos: determina si todos los elementos de datos enviados por el Observable cumplen una determinada condición.
AMB: dados varios observables, solo el primero en enviar datos enviará todos los datos.
contiene: determina si el Observable emitirá el elemento de datos especificado.
DefaultIfEmpty emite datos del observable original, o datos predeterminados si el observable original no emite datos.
Igualdad de secuencia: determina si dos valores observables están en la misma secuencia de datos.
SkipUntil: descarta los datos transferidos por el observable original hasta que el segundo observable transfiera uno y luego transfiera los datos restantes del observable original.
omitir mientras: descarta los datos transmitidos por el observable original hasta que una determinada condición sea falsa y luego transmite los datos restantes del observable original.
tomar hasta: transmite datos desde el observable original hasta que el segundo observable transmita datos o notificaciones.
TakeWhile transfiere datos observables sin procesar hasta que se cumple una condición específica y luego omite los datos restantes.
Operaciones aritméticas y de agregación
Estos operadores se pueden utilizar en toda la secuencia de datos.
promedio: calcula el promedio de la secuencia de datos transmitida por el Observable y luego transmite el resultado.
concat: concatena datos de múltiples observables sin entrelazar.
Recuento: cuenta el número de datos transmitidos observables y luego transmite el resultado.
max: calcula y transmite el valor máximo de la secuencia de datos.
min: calcula y transmite el valor mínimo de la secuencia de datos.
Reduce aplica una función a cada serie de datos en secuencia y devuelve ese valor.
suma: calcula y transmite la suma de una secuencia de datos.
Operaciones de conexión
Algunos objetos observables especiales con comportamiento de suscripción controlable con precisión
Conexión: indica que un objeto observable conectable comienza a transmitir datos al suscriptor.
Publicar: convierte objetos observables ordinarios en objetos conectables.
RefCount hace que los observables conectables se comporten como observables ordinarios.
repetición: garantiza que todos los observadores reciban la misma secuencia de datos, incluso si se suscriben después de que el Observable comience a transmitir datos.
Operaciones de conversión
para convertir un objeto observable en otros objetos o estructuras de datos.
El bloqueo bloquea operadores observables.
Árbol de decisión del operador
Varios requisitos principales
Crear directamente un objeto observable (crear operación)
Combinar múltiples objetos observables Valor de observación ( operación combinada)
Realizar una operación de transformación en los datos transmitidos por Observable.
Tomar un valor específico de los datos transmitidos por el observable (operación de filtro)
La parte positiva del valor observable (operación condicional/booleana/de filtro)
>Evaluar secuencias de datos transmitidas por observables (operaciones aritméticas/de agregación)