首页 > 解决方案 > 具有内部通量的 Java Reactor 通量过滤器

问题描述

假设我有一个Flux<O>,我想过滤掉其中的一些,但这需要另一个的结果Flux,不知道该怎么做。

例如


private Mono<Boolean> somePredicate(int num) {
   // logic
   return Mono.just(true);
}

Flux<O> flux = Flux.just(1, 2, 3, 4, ...);
flux.filter(n -> somePredicate(n));    // I know it is not right here, but could not figure out 

标签: javareactivereactorr2dbc

解决方案


你可以使用flatMap.

        Flux<Boolean> booleanFlux = Flux.just(1, 2, 3, 4)
                .flatMap(integer -> {
                    /*
                    or if you have a instance you can use method reference like this.
                    flatMap(swService::somePredicate)
                    */
                    return new MyClass().somePredicate(integer);
                });

        booleanFlux.subscribe(aBoolean -> {
            System.out.println("aBoolean = " + aBoolean);
        });

推荐阅读