gpt4 book ai didi

rx-java - 仅对 bool 可观察值中的错误值进行反跳

转载 作者:行者123 更新时间:2023-12-02 21:06:56 25 4
gpt4 key购买 nike

我有一个 bool 可观察对象(通过观察者)启动和停止 Android 服务。当 true 被传递时,服务必须立即启动。当 false 被传递时,我想将其反跳,以防很快出现 true ,以避免不必要的(和破坏性的)服务停止和启动。是否有标准运算符的组合可以做到这一点,或者我必须编写自己的运算符,如果是这样,我应该将其基于 OperatorDebounceWithTime.java 还是有更简单的方法?谢谢!

最佳答案

您似乎想要 debounce(Func1) 的版本它允许您为发出的每个项目定义自定义防抖窗口。它采用一个函数,为源 Observable 发出的每个项目返回一个 Observable。如果源 Observable 在新生成的 Observable 终止之前发出另一个项目,debounce 将抑制该项目。

例如,以下代码将立即发出 true 值,并在发出之前将 false 值保留 2 秒。如果源在计时器到期之前发出另一个 true 值,则 false 将被抑制。

deviceTrigger
.distinctUntilChanged()
.debounce(startDevice -> startDevice
? Observable.empty()
: Observable.timer(2, TimeUnit.SECONDS))
.distinctUntilChanged();

请注意,distinctUntilChanged() 调用可能不是必需的,具体取决于您的源 Observable 是否已经不同并且您的使用者是否连续处理多个 true 值。

关于rx-java - 仅对 bool 可观察值中的错误值进行反跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32962445/

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