Jua*_*dor 6 java project-reactor
嗨,全世界的校长们。我正在用 Java 进行反应式编程。我是一名 java/grails/react 开发人员,但第一步是使用 Spring Boot 进行反应式编程,在这种情况下是版本 2 M7。在接下来的代码中:
@GetMapping(API_BASE_PATH + "/flux4")
public String flux4() {
StringBuilder sb = new StringBuilder();
Flux.just("alpha", "bravo", "charlie")
.map(String::toUpperCase)
.flatMap(s -> Flux.fromArray(s.split("")))
.groupBy(String::toString)
.sort(Comparator.comparing(GroupedFlux::key))
.map(group -> group.key() + " => " + group.count() + "; ")
.subscribe(sb::append);
return "flux 4: " + sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
我打印了 group.key() 但是如何打印 group.count() ?
欢迎任何帮助
干杯
胡安
我想我和你在读同一本书:)
这是使用block().
Flux.just("alpha", "beta", "charlie")
.map(String::toUpperCase)
.flatMap(s -> Flux.fromArray(s.split("")))
.groupBy(String::toString)
.sort((o1,o2) -> o1.key().compareTo(o2.key()))
.flatMap(group -> Mono.just(Tuples.of(group.key(), group.count().block())))
.map(keyAndCount -> keyAndCount.getT1() + " => " + keyAndCount.getT2() + "; ")
Run Code Online (Sandbox Code Playgroud)
我想知道是否有不调用的替代方法block()?现在group.count()返回 a Mono<Long>,并group.key()返回 a String。如果我们可以将两者结合起来形成 aMono<Tuple2<String, Long>>而不必评估 Mono 的结果,那就太好了。似乎应该有一个通用的方法来做到这一点?
这本书试图使用:
Mono.just(group.key()).and(group.count())
Run Code Online (Sandbox Code Playgroud)
但这只是侦听完成事件并返回 a Mono<Void>,因此给了我编译错误......
补充:找到了!使用zip方法:
Flux.just("alpha", "beta", "charlie")
.map(String::toUpperCase)
.flatMap(s -> Flux.fromArray(s.split("")))
.groupBy(String::toString)
.sort((o1,o2) -> o1.key().compareTo(o2.key()))
.flatMap(group -> Mono.zip(Mono.just(group.key()), group.count()))
.map(keyAndCount -> keyAndCount.getT1() + " => " + keyAndCount.getT2() + "; ")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4303 次 |
| 最近记录: |