Reactor Flux 中的 doOnFirst 元素?

doOnFirst element in Reactor Flux?

我只想对 Flux 中元素的第一次发射执行一些操作(副作用)。

有办法吗?

一些上下文:我想在 Flux 上调用 .elapsed() 并仅记录第一个经过的时间。

事实证明我可以使用 .switchOnFirst 运算符执行条件逻辑。

所以我有:

    flux
        .elapsed()
        .switchOnFirst { signal, flux ->
            if (signal.hasValue()) {
                meterRegistry.timer("my.latency", tags).record(signal.get()!!.t1, TimeUnit.MILLISECONDS)
            }

            flux // returns the whole flux
        }
        .flatMap { Mono.just(it.t2) } // back to original flux