Mono/Flux 是否有来自 Stream/Optional API 的 Peek/IfPresent 这样的操作符?

dam*_*sen 3 java java-stream project-reactor spring-webflux

正如标题所说,想知道在使用 Mono/Flux 时,是否有任何等效(或类似)的运算符可以从 Java Stream API 中查看和 ifPresent。

Ani*_*wat 6

Flux#hasElement

如果此 Flux 序列的任何元素等于提供的值,则发出单个布尔值 true。该实现使用短路逻辑,如果元素与值匹配,则以 true 完成。

Mono<Boolean> ifPresent = Flux.<Ob>just(...)
        .hasElement(value); // similar to ifPresent
Run Code Online (Sandbox Code Playgroud)

Flux#doOnNext

添加当 Flux 发出项目时触发的行为(副作用)。

Flux<Ob> flux = Flux.<Ob>just()
        .doOnNext(i -> {}); // similar to peek
Run Code Online (Sandbox Code Playgroud)

  • 我想是的,但如果你想得到一个“Optional”,你可以做类似“Flux...filter(something)...next().blockOptional()”的事情 (2认同)
  • `doOnNext` 有点类似于 `ifPresent` - 它只会在发布者发出一个元素时执行,但这是无法保证的。 (2认同)
  • @MichaelBerry damsen 正在寻找一个完全相同的副本。我不知道该说些什么 ;) (2认同)