为什么我可以用 Mono.fromCalleable 放置可为空的值
Why i can put nullable value with Mono.fromCalleable
我想知道为什么我可以做类似的事情:
val ans = Mono.fromCallable { null }.block()
Assert.assertEquals(null, ans)
它成功了。我知道在响应式编程中我们不应该处理通道中的空值
因为用 null
完成 Mono
是可以的。在这种情况下,它直接移动到具有空(空)内容的完成状态:
T t = callable.call();
if (t == null) {
sds.onComplete();
}
else {
sds.complete(t);
}
其中:
@Override
public final void onComplete() {
countDown();
}
当您调用 block()
时,您只需从 Mono
.
中得到 null
value
重点是通道中不会处理任何事情,因为状态已经 complete
。所以,我们马上去returnnull
。
我想知道为什么我可以做类似的事情:
val ans = Mono.fromCallable { null }.block()
Assert.assertEquals(null, ans)
它成功了。我知道在响应式编程中我们不应该处理通道中的空值
因为用 null
完成 Mono
是可以的。在这种情况下,它直接移动到具有空(空)内容的完成状态:
T t = callable.call();
if (t == null) {
sds.onComplete();
}
else {
sds.complete(t);
}
其中:
@Override
public final void onComplete() {
countDown();
}
当您调用 block()
时,您只需从 Mono
.
null
value
重点是通道中不会处理任何事情,因为状态已经 complete
。所以,我们马上去returnnull
。