gpt4 book ai didi

java - 当包含返回 Mono 的函数时,我应该如何使用 Mono.zipWith?

转载 作者:行者123 更新时间:2023-12-02 09:14:32 24 4
gpt4 key购买 nike

我有一个Mono我想与另一个结合 Mono ,如:

val firstMono = Mono.just("thing");
val secondMono = Mono.just("other thing");
val thirdMono = firstMono.zipWith(secondMono, function);

但我想要 function还返回 Mono没有Mono<Mono<?>> 结尾

我能想到的最好的办法是:

val thirdMono = firstMono.zipWith(secondMono, function)
.flatMap(identity());

但这看起来有点像黑客。

我也想到了

val thirdMono = firstMono.zipWith(secondMono)
.flatMap(function);

但在这种情况下,我必须拥有 function接受Tuple2而不是单独的参数,这更难看。

有什么想法吗?

最佳答案

我认为你的解决方案足够好。

如果您认为这看起来像是 hack,您可以将其放在单独的实用程序方法中,并在找到更好的解决方案时更改它。像这样的东西:

private static  <T1, T2, O> Function<Mono<T1>, Publisher<O>> flatZipTransformer(
Mono<T2> p2, BiFunction<T1, T2, Mono<O>> function) {
return p1 -> Mono.zip(p1, p2, function).flatMap(Function.identity());
}

现在你可以像这样使用它:

firstMono.transform(flatZipTransformer(secondMono, function))

关于java - 当包含返回 Mono 的函数时,我应该如何使用 Mono.zipWith?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53266514/

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