【问题标题】:RxSwift limited Debounce to fire periodic events using additional time flagRxSwift 限制 Debounce 以使用额外的时间标志触发周期性事件
【发布时间】:2019-12-01 22:13:56
【问题描述】:

我需要 RxSwift 中的去抖功能,如果某个时间到期,无论去抖条件如何,它都会发出偶数。

例如 设置:去抖动 = 0.2 秒 & 周期性 = 5 秒。

案例 1(需要)> 如果用户连续按下按钮,我希望收到一个即使他没有停止连续点击但仅在某个时间间隔之后。这将提供具有周期性限制的类似油门的行为。

Case 2 (Works) > 如果用户每 0.5 秒按下一次按钮,去抖动限制将不是问题,用户将每 0.5 秒获得一次事件。

案例 3 (Works) > 用户没有按下任何按钮,没有触发任何事件。

虽然 debounce 提供了案例 2 和 3。实现案例 1 很棘手。


发布一些澄清 > 我的用例不是特殊的恐慌按钮点击。我知道油门应该足够了。用例更多的是连续的数据流。如果数据连续进入去抖动限制(比如 200 毫秒),我希望有一个节流行为,每 2 秒给出一次响应,但如果数据不是很频繁地出现,比如每 0.5 秒,我希望数据立即通过可观察的 UI 发送到响应速度更快。

【问题讨论】:

    标签: swift rx-swift throttling debounce


    【解决方案1】:

    在我看来,您描述的是throttle 运算符,而不是denounce 运算符。

    一般来说,在处理按钮点击/触发时应使用节流阀,在处理数据输入时应使用谴责。

    【讨论】:

    • 我正在处理数据输入。我对去抖动的问题是,除非数据输入停止,否则它不会触发任何事件,因为事件每 50 毫秒到 20 秒发生一次。如果流量快,我需要油门,如果它慢,我想要去抖动。
    • 尝试使用节流阀,并确保尝试将latest: 设置为 true 和 false,看看哪个能满足您的需求。
    • 目前我正在使用油门,它确实工作正常:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多