【发布时间】:2019-10-03 09:08:11
【问题描述】:
以下代码有效:
// emitting employees...
.flatMap(employee -> {
boolean isAlive = employee.isAlive();
return Mono.just(isAlive)
.flatMap(myBoolean -> {
if (myBoolean) {
return Mono.empty();
}
else {
return Mono.just(employee);
}
});
})
但我想知道为什么在处理 myBoolean 时不能使用 .map(返回 null 时出现 NullPointerException)
.map(myBoolean -> {
if (myBoolean) {
return null;
}
else {
return employee;
}
});
我相信我对map 与flatMap 缺乏一些了解
在 Java 8 流中,我理解 map 和 flatMap 之间的区别(对于收到的每个项目,map 发出 1,flatMap 发出 N)
但在 Reactor 中我有点困惑。我认为map 和flatMap 都会为接收到的每个元素发出1 个项目,不同之处在于map 将其作为Mono 发出,而flatMap 不会。要发出 N 个项目,我会使用 flatMapMany。
提前感谢您的解释!
【问题讨论】:
-
我最近在 flatMap 上写的一篇博文:medium.com/swlh/…。您可能会发现它很有用。