我创建了一个字符串单声道列表 List<Mono<String>> myList
。现在我需要将它们连接成一个大字符串。
当我初始化StringBuilder
时并异步更新它,可能会返回空行。
//method body....
StringBuilder builder = new StringBuilder();
myList.forEach {
mono ->
mono.map{ str -> builder.append(str)}
}
return builder.toString() //<- is ""
如何让构建器等待单声道?
最佳答案
最好的方法是将 Monos 列表转换为 Flux,然后减少 Flux 以得到一个包含所有子字符串的字符串。然后你就拥有了仍然可以以异步方式使用的 Mono。 (如果你想与项目 react 器保持异步范例,你应该始终使用 Mono/Flux)
示例:
List<Mono<String>> listOfMonosWithString = Arrays.asList(Mono.just("a"), Mono.just("b"), Mono.just("c"));
Flux<String> mergedMonos = Flux.fromIterable(listOfMonosWithString)
.flatMapSequential(Function.identity());
mergedMonos
.reduce(String::concat)
.doOnNext(System.out::println)
.subscribe();
关于java - 如何将 List<Mono<String>> 组合成一个大字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56682485/