Mono.mapNotNull(....) 和 Mono.flatMap(Mono.justOrEmpty(....)) 之间的区别

A difference between Mono.mapNotNull(....) and Mono.flatMap(Mono.justOrEmpty(....))

作为 Project Reactor 的新手,我正在努力研究文档。但是我仍然无法弄清楚以下(伪)代码之间是否存在任何实际差异:

aMonoObject
    .flatMap(value -> Mono.justOrEmpty(transform(value))
    .someOtherProcessing(...)

aMonoObject
    .mapNotNull(value -> transform(value))
    .someOtherProcessing(...)

鉴于 transform 是一个声明如下的转换方法:

@Nullable <T, R> R transform(T value);

activity 图在 docs 中看起来很相似,我不确定我是否理解正确。

提前致谢。

结果将相同,但两者之间存在语义差异。在您的情况下, mapNotNull 是更好的选择,因为它完全可以满足您的需求:转换现有流中的发射值。如果你想开始一个新的流,你可以使用 Mono.justOrEmpty

类似的问题是 Mono.justmap 运算符之间的区别是什么。