我正在制作一个不和谐的bot,它需要读取参数列表,并在给出第一个参数的情况下,让它确定要运行的分支。
有点像这样。
Mono.just(stringList)
.ifSelectmap(conditional1, branch1)
.ifSelectmap(conditional2, branch2)
.ifSelectmap(conditional3, branch3)
// non branch logic here
我想出做这样的事情的唯一方法只会导致几个深度嵌套的switchIfEmpty语句。很难管理。
答案 0 :(得分:0)
如果条件逻辑不涉及大量等待时间的操作(即执行IO),那么将更加充实的Function
传递给map
/ flatMap
并没有什么错。
我将假设您的“分支”实际上是表示为Mono<R>
或Flux<R>
的异步操作(也就是说,所有分支共享相同的返回类型R
),因此我们正在谈论flatMap
:
Flux<V> source; //...
Flux<R> result = source.flatMap(v -> {
if (conditional1) return branch1(v);
if (conditional2) return branch2(v);
if (conditional3) return branch3(v);
return Mono.empty(); //no conditional match == ignore
//you might want a default processing instead for the above
};