RxSwift throttle() 获取第一个元素

RxSwift throttle() to get first element

我正在寻找一种方法,让 throttle() 运算符在给定的时间间隔内放弃 Observable 中的第一个元素,而不是最后一个元素。

中有人提出(并回答)了类似的问题,但我想避免这些答案中的不完善之处。也就是说,在理想情况下,获得 Observable 中发出的第一个元素,并且在时间间隔的持续时间内忽略任何未来的元素。但是,当使用 window()timer() 时,两个元素可能会在 给定的时间间隔内进行 ,因为计时器恰好没有 [=36] =] 与 throttle() 调用的开始并行。示例:

|..........|..........|..........|
                    ^   ^
                first   second

它们属于不同的 windows,因此都被链接答案中描述的不完美解决方案所接受。

理想情况下,一旦 window 中的第一个元素出现,就会有一种重新启动计时器的方法,因此上面的示例看起来像:

|..........|.......|..........|
                    ^   ^
                first   second (ignored)

有什么想法吗?

编辑:明确地说,我不确定 RxSwift 3.0-beta1 的 throttle() 变体如何处理这个问题,但我正在寻找 RxSwift 2.x 实现的解决方案。

事实证明,rxSwift 3.0 以我想要的方式处理 throttle()。它需要一个元素,然后在 x 秒内忽略任何其他元素(没有我在问题中提到的 'window problem')。

为了完整起见:debounce() 仍然按照 rxSwift 的 'old' 节流定义工作。也就是说,它采用时间间隔中的最后一项。