Mono.defer() 的真实情况是什么?

问题描述

我知道 Mono.defer() 的作用,但我应该什么时候使用它?我知道其中一个用例是在返回 Mono函数中推迟一些阻塞副作用,但这通常是一种不好的做法(将副作用放在返回 MonoFlux )。当我想在 Mono 中包装一些阻塞代码时,有 Mono.fromCallable()。那么使用 Mono.defer() 的最佳情况是什么?

解决方法

Mono.fromCallable() 用于常规延迟服务调用。 Mono.defer() 产生一个 Mono,只有当您订阅时它才会这样做。因此,您可以决定不在组合阶段创建这个或那个 Mono,而是完全在目标订阅上创建。