Mono:flatMap 加载另一个项目然后 return 原始项目

Mono: flatMap to load another item then return original item

我刚开始使用 Spring Webflux,我想知道以下调用是否是在反应流中加载其他项目的好方法,以及是否可能有另一个运算符可以简化此调用:

Mono<Foo> fooMono = fooService.loadFoo();
fooMono.flatMap(foo -> barService.loadBarForFoo(foo).flatMap(bar -> Mono.just(foo)))

例如:fooMono 可能是通过 WebClient 加载的内容,而 barService.loadBarFromFoo 知道如何加载 Bar 给定的 Foo 然后将 bar 插入 foo。最后我想让 foo 回来执行更多操作,比如将另一个资源加载到 foo.

最后从 foo 创建一个新的 Mono 是好的做法还是可能有另一个运算符可以用来简化这个?

您好,如果您不需要使用 loadBarForFoo 方法的结果,您可以使用 thenReturn

fooMono.flatMap(foo -> barService.loadBarForFoo(foo).thenReturn(foo));