问题描述
我知道 Mono.defer()
的作用,但我应该什么时候使用它?我知道其中一个用例是在返回 Mono
的函数中推迟一些阻塞副作用,但这通常是一种不好的做法(将副作用放在返回 Mono
或 Flux
)。当我想在 Mono
中包装一些阻塞代码时,有 Mono.fromCallable()
。那么使用 Mono.defer()
的最佳情况是什么?
解决方法
Mono.fromCallable()
用于常规延迟服务调用。 Mono.defer()
产生一个 Mono
,只有当您订阅时它才会这样做。因此,您可以决定不在组合阶段创建这个或那个 Mono
,而是完全在目标订阅上创建。