我的"zipLatest"运算符是否已经存在?

psy*_*ca0 8 system.reactive rxjs

关于我为自己写的操作员的快速提问.

请原谅我的穷人的大理石图:

zip
aa--bb--cc--dd--ee--ff--------gg
--11----22--33--------44--55----
================================
--a1----b2--c3--------d4--e5----

combineLatest
aa--bb--cc--dd--ee--ff--------gg
--11----22--33--------44--55----
================================
--a1b1--c2--d3--e3--f3f4--f5--g5

zipLatest
aa--bb--cc--dd--ee--ff--------gg
--11----22--33--------44--55----
================================
--a1----c2--d3--------f4------g5
Run Code Online (Sandbox Code Playgroud)

zipLatest(我写的那个)几乎同时发射zip,但没有排队zip包括.

我已经实现了它,我只是想知道这是否已经存在.我知道我过去写了一个类似的方法,通过随机的机会发现我在sample不知情的情况下写了算子.

那么,这已经存在于框架中,还是作为一个我没有想到的元素的微不足道的组合存在?

注意:我不想依赖我的输入相等来进行重复数据删除(a la distinctUntilChanged).它应该使用仅"a"在一定间隔内输出的信号.

ggr*_*nig 2

提供有关该问题的更新:RxJS 6 中仍然没有包含此要求的操作符,并且似乎没有计划在未来版本中使用该操作符。也没有提出此操作员的公开拉取请求。

正如这里combineLatest所建议的,first和的组合repeat将产生预期的行为:

combineLatest(obs1, obs2).pipe(first()).pipe(repeat());
Run Code Online (Sandbox Code Playgroud)

combineLatest将等待两个 Observables 的发射 - 丢弃除每个 Observables 中最新的发射之外的所有发射。first将在发射后完成 Observable 并repeat重新订阅combineLatest,导致它再次等待两个 observable 的最新值。

的重新订阅行为repeat没有完整记录,但可以在GitHub 源中找到:

source.subscribe(this._unsubscribeAndRecycle());