如何根据 Mono<Foo> 中的条件更新 Mono<Bar>?
How to update Mono<Bar> based on a condition in Mono<Foo>?
我从这个
中给出的答案中得到以下代码
bars = bars.flatMap(bar -> findByBarId(bar.getBarId())
.flatMap(foo -> {
bar.setIsInFoo(true);
return Mono.just(bar);
}).switchIfEmpty(Mono.just(bar)));
如果我有单个 Mono<Bar> bar Mono<Foo> foo
而不是上面的 Flux 变体并获得修改后的柱,如何做上面的事情?
无论您是从 Mono<Bar> bar
还是从 Flux<Bar> bars
开始,都应该应用完全相同的逻辑。代码可以在第一个 flatMap
中稍微简化为使用 map
和 defaultIfEmpty
以避免中间 Monos
:
的开销
Mono<Bar> source;
Mono<Bar> updated = source
.flatMap(bar -> findByBarId(bar.getBarId())
.map(foo -> {
bar.setIsInFoo(true);
return bar;
})
.defaultIfEmpty(bar)
);
我从这个
bars = bars.flatMap(bar -> findByBarId(bar.getBarId())
.flatMap(foo -> {
bar.setIsInFoo(true);
return Mono.just(bar);
}).switchIfEmpty(Mono.just(bar)));
如果我有单个 Mono<Bar> bar Mono<Foo> foo
而不是上面的 Flux 变体并获得修改后的柱,如何做上面的事情?
无论您是从 Mono<Bar> bar
还是从 Flux<Bar> bars
开始,都应该应用完全相同的逻辑。代码可以在第一个 flatMap
中稍微简化为使用 map
和 defaultIfEmpty
以避免中间 Monos
:
Mono<Bar> source;
Mono<Bar> updated = source
.flatMap(bar -> findByBarId(bar.getBarId())
.map(foo -> {
bar.setIsInFoo(true);
return bar;
})
.defaultIfEmpty(bar)
);