AndyB:
私が持っているMono
私は、相互に組み合わせたいということMono
のように、:
val firstMono = Mono.just("thing");
val secondMono = Mono.just("other thing");
val thirdMono = firstMono.zipWith(secondMono, function);
しかし、私は欲しいfunction
も返すためにMono
、なくて Aで終わりますMono<Mono<?>>
私が思い付くことができる最高は以下のとおりです。
val thirdMono = firstMono.zipWith(secondMono, function)
.flatMap(identity());
それはハックのビットのように思えます。
また、私は考えます
val thirdMono = firstMono.zipWith(secondMono)
.flatMap(function);
しかし、その場合には、私が持っている必要がfunction
受け入れるTuple2
代わりに、醜悪で、個々の引数のを。
何かご意見は?
アレクサンダー銀行:
私はあなたのソリューションが十分に良いと思います。
あなたはそれがハックのように思えることと思われる場合は、別のユーティリティメソッドでそれを置くことができ、あなたがよりよい解決策を見つけたときにそれを変更します。何かのようなもの:
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))