例如,我从处理程序函数中处理ServerRequest:
fun someHandler(req: ServerRequest): Mono<ServerResponse> {
val v1: Mono<T1> req.principal()
.flatMat { ... }
val v2: Mono<T2> req.bodyToMono(SomeDTO::class.java)
.flatMap { ... }
...
someServive.m(v1, v2, ..., v5)
}
我有五个monos以及用解析值调用某种方法的东西。我可以在zip之上使用zip over zip,然后调用方法:
v1.zip(v2).zip(v3).zip(v4).zip(v5)
.map { someService.m(it.t1.t1.t1.t1, it.t1.t1.t2, ....) (something like that)
该代码不可读。我怎样才能很好地解决n个变量?我有一个选择(我也不喜欢),将所有内容嵌套:
DTOWithV1, DTOWithV1AndV2 .... DTOWithAllFields
v1.map { r1 -> v2.map { r2 -> .... v5.map { r5 -> someService.(r1, r2, ..., r5 } } }