我有 3 个反应式休息客户端功能
getOne(): Uni<String>, getTwo(reponseFromOne): Uni<List<Two>>, getThree(responsesFromTwo): Uni<List<Three>>
我想链接它们,以便将 getOne 的结果作为参数传递给 getTwo,并将 getTwo 的结果作为参数传递给 getThree。这样我就可以在所有调用都通过后构造对象
类似于..以下伪代码..
val someObjects: Uni<List<SomeObject> =
getOne().onItem().transformToUni { input -> getTwo(input) }
.onItem().transformToUni { input2 -> getThree(input2) }
.map {
SomeObject(getTwo.something, getThree.something)
}
尼克,你好! 您可以使用 flatMap 链接此类函数。我尝试以单元测试的格式实现您的示例。
@Test
void chainTest() {
var someObject = getOne()
.flatMap(input1 -> getTwo(input1)
.flatMap(input2array -> Multi.createFrom().iterable(input2array)
.onItem().transformToUniAndConcatenate(input2 -> getThree(input2)
.map(input3 -> new SomeObject(input1, input2, input3)))
.collect().asList()
))
.await().indefinitely();
}