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

156
Vistas
RxJS combineLatest agrega temporizador a solo un observable

Tengo dos entidades, Juegos y Jackpots :
interfaz de juego

 { id: string, name: string }

Interfaz de premio mayor

 { game: string, amount: number }

Primero tengo dos observables , uno para obtener juegos y otro para obtener jackpots .
Y después de obtener los datos, quiero fusionar los datos de los premios mayores en juegos basados en la identificación . Y dado que el observador de jackpots debe obtener los datos cada segundo, utilicé el timer del operador para hacerlo. Así que aquí está mi implementación:

 private getGames = (category: string): Observable<IGame[]> => { return timer(0, 3000).pipe( mergeMap(() => combineLatest([this.gameService.getGames(), this.gameService.getJackpots()])), map(([games, jackpots]) => { return games?.filter(game => game?.categories?.includes(category))?.map(game => { return { ...game, jackpot: jackpots?.find(jackpot => jackpot?.game === game?.id) }; }) }) ); };

Esta implementación funciona bien y los datos se obtienen cada 3 segundos. Ahora, como puede ver que tanto los Juegos como los Jackpots observables se recuperan cada 3 segundos, mi pregunta es: ¿hay alguna manera de ejecutar solo los Jackpots observables cada 3 segundos y excluir los Juegos observables de ese temporizador?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Contexto

combineLatest tiene dos propiedades importantes:

  • emite cada vez que cualquiera de los Observables emite un valor.
  • requiere que todos los Observables de origen emitan al menos un valor.

Solución

Puede configurar el timer solo para los juegos Observable y combinarlo con el de los jackpots .

 private getGames = (category: string): Observable<IGame[]> => { return combineLatest([ timer(0, 3000).pipe(mergeMap(() => this.gameService.getGames())), this.gameService.getJackpots(), ]).pipe( map(([games, jackpots]) => { return games ?.filter((game) => game?.categories?.includes(category)) ?.map((game) => { return { ...game, jackpot: jackpots?.find((jackpot) => jackpot?.game === game?.id) }; }); }) ); };
about 4 years ago · Juan Pablo Isaza Denunciar
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