Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

154
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda