Return Mono.empty() 来自 Mono.fromCallable

Return Mono.empty() from Mono.fromCallable

我想做如下的事情。在 Mono.fromCallable I 运行 一些块逻辑中,然后基于值 I return Mono.empty() 或值,以便它触发映射或 defaultIfEmpty。

            Mono.fromCallable(() -> {
                double number = Math.random();
                if (number < 0.5) {
                    return Mono.empty();
                }

                return number;
            })
            .map(number -> 1)
            .defaultIfEmpty(0)

这给出了一个错误,因为 Mono.fromCallable 期望一个一致的 return 值。如何调整代码以使其正常工作?

尽管 returning null 通常在 Reactor API 中被禁止,但 Callable 可能 return 是一个有效值,并且 Reactor 通过转换为正确处理它空 Mono:

Mono.fromCallable(() -> {
    double number = Math.random();
    if (number < 0.5) {
        return null;
    }

    return number;
})