【发布时间】:2019-06-20 08:59:49
【问题描述】:
我创建了一个字符串单声道列表List<Mono<String>> myList。现在我需要将它们连接成一个大字符串。
当我初始化 StringBuilder 并异步更新它时,可能会返回空行。
//method body....
StringBuilder builder = new StringBuilder();
myList.forEach {
mono ->
mono.map{ str -> builder.append(str)}
}
return builder.toString() //<- is ""
如何让构建器等待单声道?
【问题讨论】:
-
首先将
List<Mono<String>>转换为Mono<List<String>>:stackoverflow.com/questions/53231537/…。 -
@AndyTurner 我可以结合 Flux。但我不知道这是否让我的生活更轻松
-
我认为问题远不止于此。您似乎不了解 Mono/Flux 的两个关键概念。 1:它们代表异步数据流。 2. 在您订阅之前什么都不会发生。我建议你阅读 reactor 的用户指南。您订阅 Mono/FLux 以使其开始发出事件,并且只有在发出某些内容时才会通知您稍后。所以,不订阅 Monos 并希望立即有结果,是两件没有多大意义的事情。 projectreactor.io/docs/core/release/reference/index.html
-
@JBNizet 您的评论不包含任何答案,并对我的能力做出毫无根据的假设
-
这不是空穴来风。我只是查看了您提交的代码:它从不订阅,并且假设您可以立即获得结果,而不会阻塞。所以合乎逻辑的结论是你错过了关键概念,因此我的评论是为了解释你错在哪里,以及如何处理它。评论不是答案。
标签: java spring-boot project-reactor