¿Todos los observables Rx son fríos de forma predeterminada?
Por defecto , todos los observables de Rx están fríos, excepto los sujetos. Esto significa que solo emiten valores cuando tienen al menos un observador suscrito.
Operadores Rx para convertir observables fríos en observables calientes
Hay dos operadores principales que puede convertir un observable frío en un observable caliente:
conLatestFrom Operador y Cold Observables
withLatestFrom no cambia la frialdad o el calor de un observable. En su ejemplo:
Rx.fromEvent y Hot/Cold Comportamiento
La discrepancia que observó en el ejemplo de CodePen se debe al hecho de que el evento se emite solo cuando se hace clic en un elemento, no cuando se suscribe al observable Rx.fromEvent. Debido a esto, cada suscripción al observable recibe un evento diferente.
Diagrama de flujo simplificado para observables fríos
Para ilustrar el flujo simplificado de datos para observables fríos:
Source -> Observer1 -> Observer2
Diagrama de flujo simplificado para Hot Observables
Para observables activos, el flujo es:
Source -> Subject -> Observer1 -> Observer2
El sujeto actúa como un eje central, multidifusión entrante datos a todos los observadores suscritos.
Operadores de multidifusión (publicar/compartir)
Operadores de multidifusión cree un sujeto internamente y devuelva un observable conectable. Cuando el observable está conectado, el sujeto se suscribe al observable ascendente y transmite datos a todos los observadores suscritos.
Considere el flujo de datos al utilizar operadores
Comprensión del flujo de datos y el comportamiento de los operadores es crucial. Incluso si un observable está caliente, es importante considerar cómo los operadores posteriores pueden afectar su comportamiento frío o caliente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3