java中mono的条件React执行

gdx19jrr  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(587)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

昨天关门了。
改进这个问题
我有一个方法,它根据一个条件从db返回一个实体的计数,假设该方法返回一个 Mono<Long> 它被称为 repository.count() 如果计数是1,我想调用方法 A ,如果计数大于1,我想调用方法 B . 我想避免使用 repository.count().flatmap(count -> if (count == 1L) return A(); if (count > 1L) return B(); (...) } 相反,我想用 .filter() 或者 filterWhen() 但我不知道该怎么用。。。你能给我指出代码的正确方向吗?

hzbexzde

hzbexzde1#

filter() 它的变体只能删除项目(或者 Mono ,单个项)。他们不可能将它们Map到另一个值——即使你能以某种方式实现这一点,你的React流也很难读取,因为你基本上是误用了操作符。 map() 或者 flatMap() (取决于您是想要同步还是异步Map)正是正确的方法。授予 if 语句看起来不太整齐,但如果要避免这种情况,请使用三元:

.flatMap(count -> count==1 ? A() : B())

…而不是试图滥用操作员来避免。类似于上面的代码在React流中很常见,没有必要费尽心思去避免它。

相关问题