使用 RXJS,有没有一种方法可以生成一个当源 Observables 当前发出的项目数量相同时发出的 observable?

Using RXJS, is there a way to produce an observable that emits when the number of items, CURRENTLY emitted by the source Observables, is the same?

我有两个要注意的可观察对象(obs1 和 obs2)。他们永远不会完成,并且在他们的一生中我可以预期他们会发出相同数量的物品。我不知道哪个会先发射。我需要在每次源可观察对象都发出第 n 个项目时发出的东西。因此,我正在寻找以以下任一方式运行的可观察对象:

例如:

如果 obs1 发出它的 第一项 然后 obs2 发出它的 1st itemmyObservable 将产生它的 1st emission。 然后如果 obs2 发出 2nd3rd itemobs1[ 之前什么都不会发生=42=] 发出它的 第二项 然后 myObservable 才会产生它的 第二项发射 .

(a) When source observables have the same number of items emitted.

(b) Whenever, across all the source observables, the lowest number of items emitted increases.

我相信您需要“zip”功能(或者可能是 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/

RxJS#zip

Zip 完全符合您的要求。

例如,考虑这两个发射 5 次但发射率不同的间隔:

zip(
  interval(1000).pipe(map(v => v + 10) , take(5)), 
  interval(1500).pipe(map(v => v + 100), take(5))
).subscribe(console.log);