gpt4 book ai didi

java - RxJava : How to conditionally apply Operators to an Observable without breaking the chain

转载 作者:搜寻专家 更新时间:2023-10-30 21:24:45 24 4
gpt4 key购买 nike

我在 RxJava 可观察对象上有一个运算符链。我希望能够根据 boolean 值应用两个运算符之一,而不会“打断链条”。

我对 Rx(Java) 比较陌生,我觉得可能有一种比我目前引入临时变量的方法更惯用和可读的方法。

这是一个具体的例子,如果批处理大小字段为非空,则从可观察对象中缓冲项目,否则使用 toList() 发出单个无限制大小的批处理:

Observable<Item> source = Observable.from(newItems);
Observable<List<Item>> batchedSource = batchSize == null ?
source.toList() :
source.buffer(batchSize);
return batchedSource.flatMap(...).map(...)

这样的事情可能吗? (伪 lambda,因为 Java):

Observable.from(newItems)
.applyIf(batchSize == null,
{ o.toList() },
{ o.buffer(batchSize) })
.flatMap(...).map(...)

最佳答案

您可以使用 compose(Func1) 保持顺序但执行自定义行为

source
.compose(o -> condition ? o.map(v -> v + 1) : o.map(v -> v * v))
.filter(...)
.subscribe(...)

关于java - RxJava : How to conditionally apply Operators to an Observable without breaking the chain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36058320/

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