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

388
Visualizações
RxJS: ¿Cómo retrasar el próximo valor emitido?

Tengo la función asíncrona handleParamsChanges que puede tardar unos segundos en resolverse. Y lo llamo cuando observable emite valor:

 this._activatedRoute.params .subscribe(params => { this.handleParamsChanges(params).then(() => { // new value can be processed now }); });

¿Cómo podría modificar mi código para que si observable emita 2 valores uno tras otro, primero se llame a handleParamsChanges para el primer valor, y solo después de que se resuelva esta promesa, se llame con el segundo valor, y así sucesivamente?

Editar:

Aquí está la solución que se me ocurrió, pero supongo que hay una mejor manera de hacerlo:

 const params$ = this._activatedRoute.params; const canExecute$ = new BehaviorSubject(true); combineLatest(params$, canExecute$) .pipe( filter(([_, canExecute]) => canExecute), map(([params]) => params), distinctUntilChanged() ) .subscribe(async params => { canExecute$.next(false); try { await this.handleParamsChanges(params); } catch (e) { console.log(e); } finally { canExecute$.next(true); } })

Estoy usando canExecute$ para retrasar el procesamiento del nuevo valor.

Necesito usar distinctUntilChanged aquí para evitar crear un bucle infinito.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Lo que estás buscando es concatMap . Espera a que se complete el "observable interno" anterior antes de volver a suscribirse. También puede simplificar enormemente su tubería:

 params$.pipe( concatMap(params => this.handleParamsChanges(params)), ).subscribe()
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