gpt4 book ai didi

spring-webflux - Mono flatMap + switchIfEmpty 组合运算符?

转载 作者:行者123 更新时间:2023-12-02 19:42:37 28 4
gpt4 key购买 nike

是否有一个运算符可以处理结果/成功,无论 Mono 是否为空。例如:

Mono<Bar> result = sourceMono.flatMap(n -> process(n)).switchIfEmpty(process(null));

地点:

Mono<Bar> process(Foo in){
Optional<Foo> foo = Optional.ofNullable(in);
...
}

是否有一个快捷操作符可以实现如下或类似的操作?

Mono<Bar> result = sourceMono.shortCut(process);

更具体地说,mono.someOperator()返回Optional<Foo>其中将包含 null当 Mono 为空时,否则具有值。

我想避免创建如上所述的处理方法,并且只有一段代码,但不确定哪个运算符可以在不重复代码块的情况下提供帮助。

最佳答案

没有内置运算符可以完全满足您的要求。

作为解决方法,您可以将 Mono<Foo> 转换为到 Mono<Optional<Foo>>发出一个空的 Optional<Foo>而不是完成清空,然后对发出的 Optional<Foo> 进行操作.

例如:

Mono<Bar> result = fooMono            // Mono<Foo>
.map(Optional::of) // Mono<Optional<Foo>> that can complete empty
.defaultIfEmpty(Optional.empty()) // Mono<Optional<Foo>> that emits an empty Optional<Foo> rather than completing empty
.flatMap(optionalFoo -> process(optionalFoo.orElse(null)));

关于spring-webflux - Mono flatMap + switchIfEmpty 组合运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59869535/

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