reactive-programming - 使用 2 个嵌套订阅返回 Mono/Flux
问题描述
我需要为一个函数返回 Mono / Flux,但这有 2 个嵌套订阅。我正在寻找一个更好的解决方案,仅在这 2 个订阅值可用之后发布 Mono/Flux,然后执行一些操作来派生 finalValue。
最终目标是,函数 getFinalValue() 的订阅者应该能够订阅最终值。我对 Flux 也有类似的需求。最好的方法应该是什么?
fun <T> getFinalValue(): Mono<T> {
object1.getValue1().subscribe { value1 ->
object2.getValue2(value1.id).subscribe{ value2 ->
// perform some operation with value 1 and 2
// derieve finalValue
}
}
return //I need to return Mono<T> which should publish finalValue to the subscribers of this function.
}
解决方案
您可以使用.cache()
来存储 value1 并使用Mono.zip
. 然后在zip
flatMap
你有value1
和的元组value2
fun <T> getFinalValue(): Mono<T> {
val value1 = object1.getValue1().cache();
val value2 = object1.getValue1().flatMap(value -> object2.getValue2(value));
return Mono.zip(value1, value2)
.flatMap(tuple -> {
// logic with tuple.T1 and tuple.T2
})
}
推荐阅读
- elasticsearch - 弹性搜索查询未按预期结果
- python - PIL ImagineGrab 只返回 Mac 上的背景图像,而不是我想的屏幕抓取
- apache-kafka - 尽管有足够的并发性,但在扩展 Kafka 主题后没有为消费者组分配新分区
- php - 使用 Google One Tap 进行 PHP 身份验证
- c++ - 如何将mat4数组作为制服传递
- javascript - 使用 mini-css-extract-plugin 从模块中的 JS Web 组件中提取 CSS
- html - Excel VBA 在 HTML/txt 文件中复制和粘贴非英文文本
- javascript - 如何在 React 中获取更新的构造函数数据
- amazon-advertising-api - Amazon Selling Partner Api - 空配置文件
- amazon-web-services - 如何从 AWS Cognito 中的刷新令牌生成访问令牌