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();
});
如果您从不关心元素,只想传播终端信号(onComplete
和onError
),您可以使用ignoreElement
(维护通用类型)或 then()
(变成 Mono<Void>
):
Mono<String> source = Mono.just("foo");
Mono<Void> emptyWithTypeLoss = source.then();
Mono<String> emptyWithoutTypeLoss = source.ignoreElement();
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();
});
如果您从不关心元素,只想传播终端信号(onComplete
和onError
),您可以使用ignoreElement
(维护通用类型)或 then()
(变成 Mono<Void>
):
Mono<String> source = Mono.just("foo");
Mono<Void> emptyWithTypeLoss = source.then();
Mono<String> emptyWithoutTypeLoss = source.ignoreElement();