gpt4 book ai didi

java - Mono.fromCallable 和 Mono.justOrEmpty 的区别

转载 作者:行者123 更新时间:2023-12-01 23:04:18 27 4
gpt4 key购买 nike

下面两种执行方式有什么区别?

Mono.justOrEmpty(someFunction())
.doOnNext(() -> doSomeTask()).subscribe();

Mono.fromCallable(() -> someFunction())
.doOnNext(() -> doSomeTask()).subscribe();

最佳答案

使用 Mono.fromCallable,只有当结果 Mono 被订阅时,Callable 才会被延迟调用。

(如果 someFunction 不带任何参数,您甚至可以将代码段重写为 Mono.fromCallable(this::someFunction))

使用 Mono.justOrEmpty,运算符会立即捕获该值以供将来发射。所以实际上 someFunction() 方法在构建时立即被调用。

请注意,这两种变体都将正确处理返回 nullsomeFunction()(与 Mono.just(...) 不同) .在这种情况下,生成的 Mono 将简单地完成(onComplete 信号没有 onNext)。

另请注意,如果该方法是阻塞的且长时间运行,则在这两种情况下它都可能是反模式。参见 https://projectreactor.io/docs/core/release/reference/#faq.wrap-blocking

关于java - Mono.fromCallable 和 Mono.justOrEmpty 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71218721/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com