Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuáles son los operadores utilizados por RxJava para eliminar la fluctuación y evitar clics repetidos en los botones?

¿Cuáles son los operadores utilizados por RxJava para eliminar la fluctuación y evitar clics repetidos en los botones?

Cada implementación del lenguaje de programación de ReactiveX implementa un conjunto de operadores. Existe mucha superposición entre diferentes implementaciones y algunos operadores solo existen en implementaciones específicas. Cada implementación tiende a nombrar estos operadores de manera similar al contexto en el que están familiarizados con ese lenguaje de programación.

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 para implementaciones específicas del idioma.

Si desea implementar su propio operador, puede consultar aquí: Implementación de operadores personalizados

Creación de operaciones

Operadores utilizados para crear Observable

Crear: cree un Observable desde cero llamando al método del observador

Aplazar: no cree este Observable antes de que el observador se suscriba, cree un nuevo Observable para cada observador

Vacío/Nunca /Throw: crea un Observable especial con comportamiento restringido

Desde: convierte otros objetos o estructuras de datos en Observable

Intervalo: crea un Observable entero de secuencias de emisión temporizada

Solo — Convertir un objeto o colección de objetos en un Observable que emita esos objetos

Rango — Crear un Observable que emita una secuencia de números enteros en un rango específico

Repetir — Crear un Observable que emite repetidamente datos o secuencia de datos específicos

Inicio: crea un Observable que emite el valor de retorno de una función

Temporizador: crea un Observable que emite un único valor después de un retraso especificado Observable de datos

Operaciones de transformación

Estos operadores se pueden utilizar para transformar los datos emitidos por Observable. Para una explicación detallada, consulte la documentación de cada operador.

Buffer: el caché puede entenderse simplemente como almacenamiento en caché que recopila periódicamente datos de Observable en una colección y luego empaqueta y transmite estas colecciones de datos en lugar de emitir uno a la vez.

FlatMap: mapeo plano, que convierte los datos emitidos por Observable Transformar en una colección de Observables, y luego aplanar los datos emitidos por estos Observables en un solo Observable, puede considerarse como un proceso de despliegue de una estructura de datos anidada.

GroupBy: agrupa, divide el Observable original en colecciones de Observable, agrupa los datos emitidos por el Observable original por clave y cada Observable emite un conjunto diferente de datos

Map: Mapeo, aplicando una función a cada elemento de la secuencia para transformar los datos emitidos por el Observable, la esencia es ejecutar una función en cada elemento de la secuencia, y el parámetro de la función es el elemento de datos

Escanear — escanear, para aplicar una función a cada elemento de datos emitido por el Observable y luego emitir estos valores en secuencia

Ventana — Ventana, divide periódicamente los datos del Observable en varios Observables ventanas y luego emitir estas ventanas, en lugar de cada Iniciar un elemento a la vez.

Similar a Buffer, pero Buffer emite datos y Window emite Observable. Cada Observable emite un subconjunto de los datos del Observable original.

Operaciones de filtrado

Estos operadores se utilizan para seleccionar entre los datos emitidos por. Observable

Debounce: solo emite datos después de que han estado inactivos durante un período de tiempo. En términos sencillos, si no hay ninguna operación durante un período de tiempo, realice una operación

. Distinto: deduplicación, filtra elementos de datos duplicados

ElementAt: valor, obtiene elementos de datos en posiciones específicas

Filtro: filtra, filtra elementos de datos que no han pasado la prueba de predicado, únicamente Emite aquellos que pasan la prueba

Primero: el primer elemento, solo emite el primer dato que cumpla las condiciones

IgnoreElements: ignora todos los datos, solo conserva la notificación de terminación (onError o onCompleted)

p>

Último: último elemento, solo se emite el último dato.

Muestra: muestreo, los datos más recientes se emiten periódicamente, lo que equivale a muestreo de datos En algunas implementaciones, se llama ThrottleFirst

Omitir: omitir los elementos de datos anteriores

Omitir las últimas opciones: omitir los siguientes elementos de datos

Tomar: Mantenga solo los elementos de datos anteriores

TakeLast: conserve solo los siguientes elementos de datos

Operación de combinación

El operador de combinación se utiliza para combinar múltiples Observables en un solo Observable

Y/Entonces/Cuándo: combina los conjuntos de datos emitidos por dos o más Observables a través de patrones (y condiciones) y planes (luego ordena)

CombineLatest: cuando cualquiera de los dos Observables emiten datos, pasan un especificado La función combina los últimos datos (uno o dos datos) emitidos por cada Observable y luego emite el resultado de esta función

Unirse: siempre que un Observable emite datos elemento, siempre que dentro de la ventana de tiempo definida por el elemento de datos emitido por otro Observable, los datos emitidos por los dos Observables se fusionen y emitan

Fusionar: fusionar los datos emitidos por los dos Observables en uno

StartWith: emite una secuencia de datos o elemento de datos especificado antes de emitir la secuencia de datos del Observable original.

Switch: convierte un Observable que emite una secuencia de Observables en un Observable que emite los Observables más recientes. Datos emitidos uno por uno

Zip: empaquetar, usar una función específica para combinar los datos emitidos por múltiples Observables y luego emitir el resultado de esta función como un solo elemento de datos

Manejo de errores

Estos operadores se utilizan para recuperarse de notificaciones de error

Capturar: capturar, continuar la operación de secuencia, reemplazar el error con datos normales y recuperarse de notificaciones de error

Reintentar: reintentar si el Observable emite una notificación de error, vuelva a suscribirse y espere que finalice normalmente

Operaciones auxiliares

Un conjunto de operadores para procesar Observables

Retraso: retrasa la emisión de datos de resultados durante un período de tiempo.

Hacer: registra una acción para ocupar algunos eventos del ciclo de vida observables, lo que equivale a simular una operación.

<

p>Materializar/Desmaterializar: trata los datos emitidos y las notificaciones como emisiones de datos, o viceversa.

ObserveOn: especifica el observador para que observe el programador del Observable (subproceso de trabajo).

Serializar: fuerza la Observable para emitir datos en orden y la función es válida

Subscribe: la operación que se realizará después de recibir los datos y notificaciones emitidas por el Observable

SubscribeOn: especifica qué programador debe realizar el Observable ejecutar en

TimeInterval: convierte un Observable en un Observable que toma el tiempo entre la emisión de dos datos.

Timeout: agrega un mecanismo de tiempo de espera, si no se emiten datos después de un período de tiempo específico. , Emitir una notificación de error

Marca de tiempo: agrega una marca de tiempo a cada elemento de datos emitido por el Observable

Uso: crea un recurso único que solo existe durante la vida útil del Observable

p>

Operaciones condicionales y booleanas

Estos operadores se pueden usar para elementos de datos únicos o múltiples, y también se pueden usar para Observables

Todos - determinar si todos los elementos de datos emitidos por el Observable Todos cumplen una determinada condición

Amb: dados varios Observables, solo el primer Observable que emita datos emitirá todos los datos

Contiene: determina si el Observable emitirá un elemento de datos específico.

DefaultIfEmpty: emite datos del Observable original. Si el Observable original no emite datos, emite datos predeterminados.

SequenceEqual: determina si dos Observables son. en la misma secuencia de datos

p>

SkipUntil: descarta los datos emitidos por el Observable original hasta que el segundo Observable emite un elemento, luego emite los datos restantes del Observable original

SkipWhile: descarta los datos emitidos por el Observable original hasta que una condición específica sea falsa, luego emite los datos restantes del Observable original

TakeUntil: emite datos del Observable original hasta que el segundo Observable emite un dato. o una notificación

TakeWhile: emite datos de Raw Observable hasta que una condición específica sea verdadera, luego omite los datos restantes

Operaciones aritméticas y de agregación

Estos operadores pueden ser utilizado en toda la secuencia de datos

Promedio: calcula el promedio de la secuencia de datos emitida por el Observable y luego emite el resultado

Concat: conecta los datos de múltiples Observables sin entrelazar

Recuento: calcula los datos emitidos por el número observable y luego emite el resultado

Max: calcula y emite el valor máximo de la secuencia de datos

Min: calcula y emite el valor mínimo de la secuencia de datos

Reducir: aplica una función a cada una de las secuencias de datos en secuencia y devuelve este valor

Suma: calcula y emite la suma de los secuencias de datos

Operaciones de unión

Algunos Observables especiales con comportamiento de suscripción controlable con precisión

Conectar: ​​indica a un Observable conectable que comience a emitir datos a los suscriptores

Publicar: convertir un Observable normal en uno que se pueda unir.

RefCount: hacer que un Observable que se pueda unir se comporte como un Observable normal.

Reproducir: garantizar que todos los observadores reciban lo mismo. secuencia de datos, incluso si se suscriben después de que el Observable comience a emitir datos

Operación de conversión

Para: convertir el Observable en otro objeto o estructura de datos

Bloqueo de bloqueo Operador observable

Árbol de decisión del operador

Varios requisitos principales

Crear un Observable directamente (crear operación)

Combinar múltiples Observables (operación combinada )

Realizar operaciones de transformación (operaciones de transformación) sobre los datos emitidos por el Observable

Obtener datos específicos de los datos emitidos por el valor Observable (operación de filtrado)

Reenviar algunos valores de Observable (operación condicional/booleana/filtro)

Evaluar la secuencia de datos emitida por Observable (operación aritmética/agregación)