Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

242
Vistas
Almacenamiento en caché de algo con RXJS hasta una determinada condición

Estoy tratando de hacer un Observable RXJS que esencialmente actuará como un caché. Por lo general, solo puedo usar shareReplay para esto, sin embargo, los datos que intento almacenar en caché se basan en el usuario, por lo que es necesario restablecerlos. Lo siguiente hace casi lo que quiero:

 const myObservable = userProfile.pipe( switchMap(profile => loadData(profile)), shareReplay(1) );

Ahora los datos se cargan en la primera suscripción y no se volverán a cargar hasta que aparezca un nuevo perfil de usuario. Sin embargo, esto no funciona del todo, porque un suscriptor que se suscribe mientras se cargan los nuevos datos aún recibe los datos antiguos que se almacenan en caché. Esto hace que la interfaz de usuario muestre los datos antiguos del usuario anterior. Para eludir esto hice lo siguiente:

 const myObservable = userProfile.pipe( switchMap(profile => loadData(profile).pipe(startWith(null))), shareReplay(1), filter(v => v != null) );

Esto ahora funciona muy bien excepto por una cosa: una vez que un nuevo usuario inicia sesión, los datos se cargan inmediatamente, aunque actualmente no hay suscriptores a myObservable . Esto sucede porque shareReplay nunca se da de baja de la fuente. Puede hacer que lo haga usando refCount: true , pero eso deshabilitará el comportamiento de almacenamiento en caché que quiero, porque el búfer de reproducción se borra cuando no hay más suscriptores.

No tengo idea de cómo lograr esto usando operadores RXJS o si necesito escribir un operador personalizado.

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda