gpt4 book ai didi

android - RxJava 单 : flatMap if false

转载 作者:搜寻专家 更新时间:2023-11-01 09:32:04 24 4
gpt4 key购买 nike

我有一个 Boolean Singles 列表,我想通过以下方式将其转换为 Maybe:

按顺序遍历列表中的每个发射,如果上游发射是假的 flatMapMaybeMaybe.never() 但如果发射是真的订阅next 在列表中单选,直到列表为空。

这是我目前所拥有的:

private void subscribeIfAllTrue(List<Single<Boolean>> singles) {

if (singles.isEmpty()) {
return;
}
Single.concat(blockingSingles)
.flatMapMaybe(
(Function<Boolean, MaybeSource<Boolean>>) shouldProgress -> {
if (shouldProgress) {
// flatMap to next single in list.
// if last in list then Maybe.just(true)
} else {
Maybe.never();
// break from list
}
}
}

这显然行不通,因为我们通过 concat 订阅所有单曲,但这不是我想要的行为。想知道是否有一个 rx 运算符基本上 break; 如果一个发射是错误的,则停止从订阅列表中订阅,同样当最后一个在最后只返回 Maybe.just(true)。在看

我不想订阅所有单曲的主要原因是上游 bool 值发射正在执行 ui 更改,如果一个为 false,不想通过中断来触发其余的 ui 更改。

最佳答案

也许使用takeUntil(或许,lastElement())来获得所需的模式。

Mayble<Boolean> m = Single.concat(blockingSingles)
.takeUntil(bool -> !bool)
.lastElement()

关于android - RxJava 单 : flatMap if false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46270136/

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