gpt4 book ai didi

swift - RxSwift throttle() 获取第一个元素

转载 作者:行者123 更新时间:2023-11-28 11:03:24 29 4
gpt4 key购买 nike

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

类似的问题已在 RxSwift - Debounce/Throttle "inverse" 中提出(并回答) ,但我想避免这些答案中的缺陷。也就是说,在理想情况下,获取 Observable 中发射的第一个元素,并且在时间间隔的持续时间内忽略任何 future 的元素。但是,在使用 window()timer() 时,两个元素有可能在给定的时间间隔内 进行,因为计时器碰巧没有与 throttle() 调用的开始并行运行。示例:

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

它们落入不同的窗口,因此都被链接答案中描述的不完美解决方案所接受。

理想情况下,有一种方法可以在窗口中的第一个元素出现时立即重新启动计时器,因此上面的示例看起来像这样:

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

有什么想法吗?

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

最佳答案

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

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

关于swift - RxSwift throttle() 获取第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39813242/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com