Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

162
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!