Reactor 3 从映射函数创建 MonoEmpty

Reactor 3 create MonoEmpty from a map function

map 函数中的 return 值应该是多少才能使生成的单声道成为 MonoEmpty

示例:

Mono<Void> empty = Mono.just("ping").map(s-> ????);

如果我需要此功能,模式应该是 flatMap 吗?

Mono<Void> empty = Mono.just("ping").flatMap(s-> Mono.empty());

如果您需要在大部分时间进行转换,但在某些情况下为空,请使用 handle(它可以映射到任何内容而无需 flatMap 的开销) :

Mono<String> emptyIfNotPing = Mono.just("ping")
        .handle((t, sink) -> {
            if (t.equals("ping")) sink.next("pong");
            else sink.complete();
        });

如果您从不关心元素,只想传播终端信号(onCompleteonError),您可以使用ignoreElement(维护通用类型)或 then()(变成 Mono<Void>):

Mono<String> source = Mono.just("foo");
Mono<Void> emptyWithTypeLoss = source.then();
Mono<String> emptyWithoutTypeLoss = source.ignoreElement();