gpt4 book ai didi

rx-java - 仅在链中的 Observable 发出事件后才获取事件

转载 作者:行者123 更新时间:2023-12-04 17:56:57 25 4
gpt4 key购买 nike

这是链:observableOne.flatMap(event -> observableTwo).subscribe()

我想在第一次发出事件时从 observableOne 获取事件,然后忽略来自此 Observable 的所有其他事件,直到 observableTwo 已经发出一个值,完成或完成时出现错误。值得一提的是,最终我对来自第二个 Observable 的事件很感兴趣。

上下文就像是,有一个 Button,点击它会触发一个事件,这就是 ObservableOne。激发的事件触发 ObservableTwo,假设这是一个网络操作链。所以我想在执行网络操作时忽略所有按钮点击。

最佳答案

您可以使用 Flowable 而不是 Observable,然后您可以使用背压来实现所需的效果(丢弃事件直到 observableTwo 终止) 通过将 flatMapmaxConcurrency 设置为 1:

observableOne
.toFlowable(BackpressureStrategy.DROP)
.flatMap(event -> observableTwo.toFlowable(BackpressureStrategy.ERROR), 1)
.subscribe();

我发布了一个similar question here .

事实证明,在 RxJava2Extensions 中还有一个 ObservableTransformer 正是用于此目的。 akarnokd 的图书馆。可以这样使用:

observableOne
.compose(ObservableTransformers.flatMapDrop(event -> observableTwo))
.subscribe();

关于rx-java - 仅在链中的 Observable 发出事件后才获取事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39756759/

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