Tengo dos observables (obs1 y obs2) a los que quiero prestar atención. Nunca se completan y durante su vida puedo esperar que emitan la misma cantidad de elementos. No puedo saber cuál emitirá primero. Necesito algo que emita cada vez que los observables de origen hayan emitido cada uno su enésimo elemento. Entonces, estoy buscando un observable que actúe de alguna de estas maneras:
Si obs1 emite su primer elemento y luego obs2 emite su primer elemento , myObservable producirá su primera emisión . Entonces, si obs2 emite un segundo y un tercer elemento , no sucederá nada hasta que obs1 emita su segundo elemento y solo entonces myObservable producirá su segunda emisión .
(a) Cuando las fuentes observables tienen el mismo número de elementos emitidos.
Zip hace exactamente lo que buscas.
Por ejemplo, considere estos dos intervalos que emiten 5 veces cada uno pero a diferentes velocidades:
zip( interval(1000).pipe(map(v => v + 10) , take(5)), interval(1500).pipe(map(v => v + 100), take(5)) ).subscribe(console.log);Creo que desea la función "zip" (o tal vez combineLatest).
https://rxjs.dev/api/index/function/zip
https://rxjs.dev/api/index/function/combineLatest
https://www.freecodecamp.org/news/understand-rxjs-operators-by-eating-a-pizza/