假设你有一些助焊剂和单声道
val people: Flux<Person> = repo.getPeople()
val peopleCount: Mono<Int> = people.count()
以及来自例如WebFlux Controller ,您返回 Mono
data class Response(
val people: List<People>,
val personCount: Int
)
应用程序中的适当位置将通量和单声道分别解析为列表和整数?你只是阻止()一切吗?有没有办法让框架解决一切问题?
编辑:我想我主要的困惑是我看到的所有教程中响应对象内的字段实际上并不是 react 性的,所以看起来我需要在从 Controller 返回对象之前解决所有问题。如果响应对象看起来像这样,对我来说会更有意义
data class Response(
val people: Flux<People>,
val personCount: Mono<Int>
)
最佳答案
如果您在 servlet 世界中使用reactor,则只能阻止,即使这样您也可以传回 Mono/Flux,并且它将是一个异步请求。
举个例子,比如,
return repo.getPeople().collectList().map( people -> new response(peoples, people.count())
最终结果为 Mono<Response>
框架将订阅的内容。
您需要使用 Mono/Flux 上的运算符,并且不要阻塞 react 链。我建议查看 Reactor java 文档。每个运算符(operator)都有很棒的图表,可以直观地了解运算符(operator)正在做什么。
关于java - 什么时候应该阻止/订阅 Mono/Flux?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68669741/