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

136
Visualizações
Espera en observables anidados

Soy nuevo en Observables; Tengo que convertir un bucle for anidado con Observables y, cuando se cumple una condición, esperar una cierta cantidad de tiempo.
Pude convertir el bucle for con Observables, pero no alcancé a lograr la "pausa" del flujo de 5 segundos después de que el valor de la variable globalCounter se establece en 5.
¿Cómo hacerlo? Gracias.

 import { map, Observable, Subject } from "rxjs"; const array1 = ["Alfa", "Beta", "Gamma"]; const array2 = ["Laura", "Valentina", "Cristina"]; const array3 = ["Red", "Green", "Blue"]; const mySubject = new Subject<number>(); let globalCounter = 0; const myObservable1$ = new Observable<string>((observer1) => { array1.map((u) => { observer1.next(u); }); }); const pipeline1 = myObservable1$ .pipe( map(async (value1) => { const return2 = await fObservable2(value1); return2.subscribe({}); }) ) .subscribe(); async function fObservable2(value1: string) { return new Observable<string>((observer2) => { array2.map(async (d) => { const valueToPassTofObservable3 = value1 + " --- " + d; const return3 = await fObservable3(valueToPassTofObservable3); return3.subscribe({ next: async (value3) => { console.log( `OBSERVABLE2 - value3: ${value3} - globalCounter: ${globalCounter}` ); }, }); }); }); } async function fObservable3(value2: string) { let toBeReturn3; if (globalCounter === 5) { await sleep(); } return new Observable<string>((observer3) => { array3.forEach((t) => { toBeReturn3 = t + " --- " + value2; observer3.next(toBeReturn3); mySubject.next(globalCounter++); }); }); } function sleep() { return new Promise((resolve) => { setInterval(() => { globalCounter = 0; resolve(true); }, 5000); }); }
about 4 years ago · Juan Pablo Isaza
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