首页 > 解决方案 > 由操作员检查通量流

问题描述

我尝试检查现有流,但到目前为止找不到特殊运算符。

Flux.just(1, 2, 3)
    // just inspect every element
    .map(e -> {
        System.out.println(e);
        return e;
    })
    .subscribe();

我正在寻找像peek()Java Streams 或tap()RxJS 这样的运算符。

标签: javaproject-reactor

解决方案


正如您评论的那样,doOnNext(System.out::println)只会打印每个元素,这对于简单的用例可能就足够了。(一般来说,doOnNext()用于副作用,所以tap()在这个意义上相当于。)

但是,如果调试是您的主要目的,您可能还想查看log(),它会为您提供更多有用的信息(例如通知您订阅、请求等以及每个元素,以及它们如何联系在一起。 ) 例如:

Flux.just(1, 2, 3)
        .log()
        .subscribe();

印刷:

[ INFO] (main) | onSubscribe([Synchronous Fuseable] FluxArray.ArraySubscription)
[ INFO] (main) | request(unbounded)
[ INFO] (main) | onNext(1)
[ INFO] (main) | onNext(2)
[ INFO] (main) | onNext(3)
[ INFO] (main) | onComplete()

推荐阅读