kotlin - 如何在 kotlin 中组成超过 8 个反应器 Mono
问题描述
我正在进行 10 个独立的网络调用,每个调用都返回一个不同类型的 Mono。这些调用可以并行运行。在他们全部完成后,我想根据结果计算一些东西。
Mono.zip(
mono1(),
mono2(),
mono3(),
...
mono8()
)
Mono.zip 最多允许我编写 8 个 Monos。我可以通过多次使用 zip 来解决问题,但这不是一个干净的方法。
Mono.zip(
mono1(),
mono2(),
mono3(),
...
mono8()
).zipWith(mono9())
使用数组或可迭代Monos 以及组合函数的 zip 重载给了我Array<*>我丢失了所有单独的 Mono 类型的地方。
有没有更好的方法来组成这么多的 Monos ?
解决方案
您可以尝试根据某些共性将您的 Monos 分组为少于 8 个项目的组,然后将它们压缩在一起。
例子:
Mono.zip(
getLocationInfo(),
getHotelInfo(),
{ locationInfo, hotelInfo -> Hotel(hotelInfo, locationInfo) }
)
fun getHotelInfo(): Mono<HotelInfo> {
return Mono.zip(
getStarRating(),
getAvailableRooms(),
{ starRating, rooms -> HotelInfo(starRating, rooms) }
)
}
fun getLocationInfo(): Mono<Region> {
return Mono.zip(
getCoordinates(),
getCountry(),
{ coordinates, country -> Region(coordinates, country) }
)
}
推荐阅读
- delphi - 如何检查字符串中是否存在“@”
- reactjs - 之间的区别
和组件名称()? - flutter - flutter 构建函数返回 null
- c - 如何通过为变量提供相同的值数组来防止缓冲区溢出?
- google-chrome - 我可以通过eclipse运行Gwt应用程序,但是一旦我创建了一个war文件并部署到tomcat服务器中就无法访问gw
- powershell - Powersell - 远程查询用户是否跨域存在 [最快]
- visual-studio-code - Visual Studio Code git-bash 终端中的键映射
- sql - oracle如何连接两个表
- android - Android Studio 4.0 无法解析 gradle 依赖
- node.js - 如何在没有 $unwind 的情况下加入三个集合并根据条件获取嵌套结果?