Java迭代列表<?扩展通量>

时间:2019-09-18 18:18:20

标签: java iterator spring-webflux flux

我的方法得到助焊剂。 我如何遍历Flux? 我想遍历它的对象,并对每个孩子进行操作。

public void write(List<? extends Flux<Child>> childFlux) throws Exception {

    childFlux.stream()
            .map(children -> children.collectList())
            .forEach(child -> run(child); //not compile

} 

 public void run(Child child) {
      //TO DO
 }

1 个答案:

答案 0 :(得分:2)

这似乎是一种反模式。但是,存在一些基本错误。

  1. map(children -> children.collectList())将返回Mono<List<Child>>
  2. forEach(child -> run(child);您忘了一个右括号,应该是forEach(child -> run(child));
  3. 但是它不会编译,因为child将是Mono<List<Child>>而不是Child
  4. 使用反应式编程时,在订阅之前没有任何反应

您真正需要做的是类似

Flux.concat(childFlux).subscribe(this::run)
  

连接可迭代的所有元素,这些元素由下游来源发出。

Flux.merge(childFlux).subscribe(this::run)
  

将数组/ vararg中包含的发布者序列中的数据合并到交错的合并序列中。与concat不同,消息源是热切订阅的。