首页 > 解决方案 > 速率限制可观察

问题描述

我有一个非常快地发射项目的 observable。我想限制这些项目。我的操作员每 x 秒最多只能发出 1 个元素,而忽略其余的。

具体来说,我想创建一个这样的运算符:

在此处输入图像描述

如您所见,它只会发出第一项,而忽略其余的 5 个时间单位。A、B 和 C 分别在 t=1、t=2 和 t=3 上。B 和 C 被忽略,因为生成的序列应该每 5 个时间单位发出最多 1 个项目。

当 D 到来时,它被发出,因为它在 5 个时间单位到期时到来,但 E 不是,因为 D 已经发出。最后,原始序列很长一段时间都没有发出任何东西,直到 F 到来。派生的序列发出 D。

请注意,派生序列发出第一个元素,并且在指定的时间跨度过去之前它不会发出任何其他项。一旦时间跨度到期,它就可以接受另一个项目了。

如何创建此运算符?

标签: reactive-programmingsystem.reactivereactive

解决方案


推荐阅读